【发布时间】:2020-04-23 21:43:26
【问题描述】:
我有一个数组:
var data = [{
"name": "Main Hobbies",
"checked": false,
"children": [{
"name": "Dance",
"checked": false,
"children": [{
"name": "Salsa",
"checked": true
}, {
"name": "Solo",
"checked": false
}]
}, {
"name": "Sports",
"checked": false,
"children": [{
"name": "Cricket",
"checked": true
}]
}]
}, {
"name": "Game",
"checked": false,
"children": [{
"name": "PUBG",
"checked": false
}, {
"name": "Cricket",
"checked": false
}, {
"name": "Football",
"checked": true
}]
}]
function removeFalseElem(arr) {
arr.forEach(element => {
if (Array.isArray(element.children) && element.children.length > 0) {
element.children = element.children.filter(e => {
return e.checked === true
});
element.children.map(e => {
delete e['id'], delete e['checked']
})
} else {
removeFalseElem(element.children);
}
delete element['id'], delete element['checked'];
});
}
removeFalseElem(data);
console.log(data);
如何将name 映射到key 和children 到array 包含checked 是true 的任何位置。 Main hobies 应该包含 Salsa,因为它已被检查。我只是想反转这个question
输出应该是这样的
{
"Main Hobbies": { Dance: ["Salsa"], Sports: ["Cricket"] },
Game: ["Football"]
}
必须只保留checked:true 值
【问题讨论】:
标签: javascript arrays ecmascript-6