nodejs 用reduce遍历输出不了结果,求助。

原始数据如下:

[
   {
    name: '李小华',
    skill: '挖掘',
  },
  {
    name: '李小华',
    skill: '起重',
  },
  {
    name: '赵里斯',
    skill: '挖掘2',
  },
    {
    name: '赵里斯',
    skill: '挖掘3',
  },
  {
    name: '赵里斯',
    skill: '挖掘4',
  },

我用了reduce来遍历结果,希望结果是:

[{ 
    value: '李小华', 
    label: '李小华', 
    children: 
    [{ 
        value: '挖掘', 
        label: '挖掘', 
        },
        {
        value: '起重'
        label: '起重'
        }]
  },{
    value: '赵里斯', 
    label: '赵里斯', 
    children: 
    [{ 
        value: '挖掘2', 
        label: '挖掘2', 
        },
        {
        value: '挖掘3'
        label: '挖掘3'
        },
        value: '挖掘4'
        label: '挖掘4'
        }]
  },
  }
        

目前是这样写的,但是结果总是为空[],不知哪里写错了,请教大神解救。


const arr = skills.reduce((arr,k)=>{
            !arr.some((v)=>v.value == k.name&&v.children.push({value: k.skill,})&&arr.push({value: k.name,childred:[k.skill]}));
            return arr;
        },[])

        console.log('打印arr',arr);
阅读 1.8k
2 个回答

arr不是空数组么,那arr.some一直不会执行啊,不就是一直返回[]么

找到问题了,有个地方写错了。

            !arr.some((v)=>v.value == k.name&&v.children.push({value: k.skill,})) && arr.push({value: k.name,childred:[k.skill]});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题