javascript - 在Javascript中为每个嵌套的孩子添加父ID
问题描述
如何创建父 ID 并将该 ID 插入到 Object 的每个嵌套子代中。我试过这个:
const data = {
values:[
{
name:"test1",
validation:"",
values:[{
name:"nested1",
validation:"",
values:[{
name:"nested2",
validation:""
}]
}]
},
{
name:"test21",
validation:"N/A",
values:[{
name:"nested",
validation:""
}]
}
]
}
const iterate = function(value, parentVal){
value.forEach((ele,idx) => {
ele.parent = `${parentVal}${idx}`;
if(ele.values && ele.values.length > 0){
if(typeof ele.values === "object"){
parentVal = idx;
iterate(ele.values, parentVal)
}
}
})
return value
}
iterate(data.values,0)
我试图为每个孩子添加父引用,例如data.values[0].values[0].values[0]
我想将父引用 parentVal 添加为 000,并且对于data.values[0].values[0]
parentval 0。
解决方案
将嵌套调用改为iterate(ele.values, ele.parent)
而不是iterate(ele.values, parentVal)
应该没问题。
const data = {
values:[
{
name:"test1",
validation:"",
values:[{
name:"nested1",
validation:"",
values:[{
name:"nested2",
validation:""
}]
}]
},
{
name:"test21",
validation:"N/A",
values:[{
name:"nested",
validation:""
}]
}
]
}
const iterate = function(value, parentVal){
value.forEach((ele,idx) => {
ele.parent = `${parentVal}${idx}`;
if(ele.values && ele.values.length > 0){
if(typeof ele.values === "object"){
parentVal = idx;
iterate(ele.values, ele.parent)
}
}
})
return value
}
iterate(data.values,0)
console.log(data)
推荐阅读
- php - MainController.php 中的 PHP / LARAVEL 5 ErrorException
- arrays - Symfony 4 formbuilder loop each rows from database table
- ios - Swift TabbarViewController action based on alert selection. shouldSelect and didSelect are not helping
- eclipse - 为我的 IDE 中的所有项目升级 Gradle 到新版本?
- javascript - 在静态 navigationOption 函数中无法通过 onPress
- powerbi - 基于标准计算列的 Dax 查找日期
- python - 开发将在不同环境中运行的python软件
- tree - 使树列不是第一个而是第二个
- c# - 在 C# 中调用 showdialog 时出现线程异常异常
- javascript - 使用递归的 N 元树后序遍历