js数组遍历问题

image.png
遍历tableData1中的每一项,item1中有子数组为chidren,给item1.children重新赋值了,为何最后return的item1中的children并没有改变

阅读 1.2k
1 个回答

有些看晕了,建议优化一下,递归就好了 ...

// 对应 tableData1
var data =  [{dept:"1",children: [{dept:"1-1"}]}];   
// 对应 tableData2               
var data2 = [{dept:"1", name: "sss"}, {dept: "1-1", name: "aaa"}];
let temp = null;

// orgin 数据中的对照组
//  dist 输出结果的数据源
function formatArray(orgin, dist){
    return dist.map(item => {
        // 递归结果
        item.children = item.children && formatArray(orgin,item.children) || [];
        // 缓存对照结果
        let temp = orgin.find( list => list.dept === item.dept);
        // 输出有效信息
        return temp && {...item, ...temp} || { dept: "" }
    })
}

JSON.stringify(formatArray(data2, data))

至少这个函数的输出是符合预期的,建议切换一下试试
至于原来的函数,抱歉没看出哪里有问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题