题目描述
N层级嵌套父子级(相对)处理:若传入参数为某一父级ID,则将其checked连同子级checked设为false;如果传入参数为子级ID,则将其checked为false,若此子级无兄弟(或兄弟均checked均为false),则父checked为false;反之...
题目来源及自己的思路
/**
- 方法
- 层级 N层级
- 结果:返回新的数组对象 - exceptId === id 将checked设为false 关联 父级
*/
function resetData(list, exceptId) {
if (Array.isArray(list) && list.length !== 0) {
list = list.map(item => {
if (item.id === exceptId) {
item.checked = false;
if (Array.isArray(item.children)) {
item.children = item.children.map(it => it = { ...it, checked: false });
}
} else if (Array.isArray(item.children)) {
resetData(item.children, exceptId);
}
return item;
});
return list;
} else {
return false;
}
}
console.log(resetData(arr, 70));
相关代码
粘贴代码文本(请勿用截图)
const arr = [
{
"id": 3,
"name": "标题1",
"children": [
{
"id": 4,
"name": "1-1",
"children": null
}
]
},
{
"id": 5,
"name": "标题2",
"children": [
{
"id": 6,
"name": "2-1",
"children": null
},
{
"id": 7,
"name": "2-2",
"children": [
{
"id": 70,
"name": "2-1-1",
"checked": true,
"children": null
}
]
}
]
},
{
"id": 8,
"name": "标题3",
"children": [
{
"id": 9,
"name": "3-1",
"checked": true,
"children": null
}
]
}
];
你期待的结果是什么?实际看到的错误信息又是什么?
例如:传入参数70,则父7为falseconsole.log(resetData(arr, 70));
例如:传入参数5,则父5、6、7、70均为falseconsole.log(resetData(arr, 70));
你的方法跟arr变量都不对应呀,key和isLeaf都没有。 应该把key改为id,把isLeaf改为children吧
