两个树形数组嵌套循环便利赋值问题如何优化

两个树形数组嵌套循环便利赋值问题如何优化

  const arr1 = [

{

id: 1,

name: 'aa',

children: [

{

id: 2,

name: 'aa-a',

},

],

},

]

const arr2 = [

{

id: 1,

name: 'bb',

children: [

{

id: 2,

name: 'bb-a',

},

],

},

]

arr1.forEach((v) => {

arr2.forEach((s) => {

if (v.id === s.id) {

v.name = s.name

}

v.children &&

v.children.forEach((subV) => {

s.children &&

s.children.forEach((subS) => {

if (subV.id === subS.id) {

subV.name = subS.name

}

})

})

})

})

两个数组,两个数组层级都是两层,如果第一个数组中的对象的id和第二个数组的对象的id相同,则把第二个数组中对象的name赋值给第一个数组中对应的对象的name,现在是通过循环比对赋值的写法,有无更好的优化写法


回答:

我的话会这么写,因为树的结点id应该都不一样

function loopTree(tree, cb){

tree.forEach(node => {

cb && cb(node);

Array.isArray(node.children) && loopTree(node.children);

})

}

let obj = {}

loopTree(arr2, node => obj[node.id] = node.name)

loopTree(arr1, node => node.name = obj[node.id] || node.name)

以上是 两个树形数组嵌套循环便利赋值问题如何优化 的全部内容, 来源链接: utcz.com/p/936558.html

回到顶部