const tree = [
{
name: "item1",
id: 1,
children: [
{
namt: 'item11',
id: 11
},
{
namt: 'item12',
id: 12
},
]
},
{
namt: 'item2',
id: 2
},
{
namt: 'item3',
id: 3,
children: [
{
name: "item31",
id: 31
},
{
name: "item32",
id: 32
},
]
},
]
let ids = [1, 12, 2, 32]
function treeFilter(tree, ids) {
// 克隆一个新数组
let arr = tree.map(node => {
return { ...node }
})
// 利用新数组进行筛选
return arr.filter(node => {
if (node.children) {
// 有children的,继续递归
node.children = node.children && treeFilter(node.children, ids);
// 筛选出id在id数组中的那一项
return ids.includes(node.id) || (node.children && node.children.length);
}
else {
// 没有children 直接筛选出id在id数组中的那一项
return ids.includes(node.id)
}
})
}
let arr = treeFilter(tree, ids)
console.log(arr);
js利用递归,从多维数组中找出id在另一个id数组中的项,返回多维数组
于 2024-08-14 14:10:45 首次发布