当前的 JSON 数据结构如下
{
"name": "root",
"children": [
{
"name": "demoA",
"children": []
},
{
"name": "demoB",
"children": [
{
"name": "demoB-A",
"children": []
},
{
"name": "demoB-B",
"children": []
},
{
"name": "demoB-C",
"children": []
}
]
},
{
"name": "demoC",
"children": []
}
]
}
有个特殊的需求
- 每个 JSON 对象都有一个属性:
primary
(boolean 类型) primary
属性是通过遍历这个 JSON 树来给每个对象设置的- 当这个 JSON 对象的
children
有数据, (即iten.children.length !== 0
) 的时候, 需要判断这个children
数组, 如果该数组内所有元素的children
都没有数据, 则primary
为true
, 否则为false
- 也就是说, 判断
primary
属性是两个条件的拼接 (children 有数据
&&children 里所有对象的 children 没有数据
)
那么, 如何给每个 JSON 对象添加 primary
属性
如果遍历成功, 那么得到的结果是这样的
{
"name": "root",
"primary": false,
"children": [
{
"name": "demoA",
"primary": false,
"children": []
},
{
"name": "demoB",
"primary": true,
"children": [
{
"name": "demoB-A",
"primary": false,
"children": []
},
{
"name": "demoB-B",
"primary": false,
"children": []
},
{
"name": "demoB-C",
"primary": false,
"children": []
}
]
},
{
"name": "demoC",
"primary": false,
"children": []
}
]
}
HTML 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const data = {
"name": "root",
"children": [
{
"name": "demoA",
"children": []
},
{
"name": "demoB",
"children": [
{
"name": "demoB-A",
"children": []
},
{
"name": "demoB-B",
"children": []
},
{
"name": "demoB-C",
"children": []
}
]
},
{
"name": "demoC",
"children": []
}
]
}
function setPrimary() {
// ...
}
setPrimary();
console.log(data);
</script>
</body>
</html>
大概这个意思吧,也可以再优化一下不用循环2次