数组对象如何扁平化?

各位大佬们,我的功能是在数组里用find找某个值返回,但是原数据是数组对象用不了flat,现在的想法就是把数组对象中的数组拿出来,上代码:
以下是原数据:

[{
    name:'zs',
    children: [{
        name: 'ls',
        children: [{
            name: 'ww'
        }]
    }]
},
{
    name: '雷欧',
    children:[{
        name: '迪迦',
        children: []
    }]
}]

以下是实现后的数据:

[{
    name:'zs'
},
{
    name: 'ls'
},
{
    name: 'ww'
},
{
    name: '雷欧'
},
{
    name: '迪迦'
}]

致谢!

阅读 2.4k
3 个回答

感谢各位已经解决了,用了concat和回调

            flatten(arr) {
                return [].concat(...arr.map(item => {
                    return item.children ?
                        [].concat(item, ...this.flatten(item.children)) : 
                        [].concat(item)
                }))
            }

最简单粗暴的方法:

const newArr=[]

const handleArr = (arr)=>{
  arr.forEach(item=>{
    newArr.push({name:item.name})
    if(item.children && item.children.length>0){
      handleArr(item.children)
    }
  })
}
handleArr(arr)
console.log(newArr)
const findName = (data, result = []) => {
  data.forEach((item) => {
    result.push({ name: item.name });
    if (item.children) findName(item.children, result);
  });
  return result;
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题