escapeCn 2020-12-30 12:40 采纳率: 66.7%
浏览 1592
已采纳

js将一个数组对象中包含两个相同的key属性,整理成为一个新的数组


const list = [
    {
        no:'202012300001',
        exno:'yt',
        name:'订单1'
    },
    {
        no:'202012300001',
        exno:'yt',
        name:'订单2'
    },
    {
        no:'202012300002',
        exno:'yt',
        name:'订单3'
    },
    {
        no:'202012300002',
        exno:'yt',
        name:'订单4'
    }
];

//需要整理成为
const list = [
{
        name:'yt',
        no:'202012300001',
        list:[
            {
                name:'订单1'
            },
            {
                name:'订单2'
            }
        ],
    },
    {
        name:'yt',
        no:'202012300002',
        list:[
            {
                name:'订单4'
            },
            {
                name:'订单3'
            }
        ],
    }
];

这要怎么处理呢?求大神指点

  • 写回答

4条回答 默认 最新

  • bosaidongmomo 2020-12-30 13:43
    关注
     arr = [
            {
                no: '202012300001',
                exno: 'yt',
                name: '订单1'
            },
            {
                no: '202012300001',
                exno: 'yt',
                name: '订单2'
            },
            {
                no: '202012300002',
                exno: 'yt',
                name: '订单3'
            },
            {
                no: '202012300002',
                exno: 'yt',
                name: '订单4'
            }
        ];
        let newArr = []
        arr.forEach(({ no, exno }) => {
            if (newArr.filter((res) => { return res.no == no && res.exno == exno }).length == 0) {
                newArr.push({ no, exno, list: [] })
            }
        })
        newArr.forEach((item) => {
            let names = arr.filter((res) => { return res.no == item.no && res.exno == item.exno });
            names.forEach((res) => {
                item.list.push(res.name)
    
            })
        })
        console.log(newArr)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 我可能需要一位好同志远程助力一下TAT手贱乱动c盘office用不了了
  • ¥15 linux下点对点协议连接2个USB串口的硬件流量控制问题
  • ¥15 SQL数据自动生成问题
  • ¥15 设密码后无法访问他人的共享文件
  • ¥15 浏览器打不开学校网页
  • ¥100 android开发打不开相册,不弹出授权信息,请问怎么解决?
  • ¥15 我想通过python处理sybase IQ库的一些数据,但是不知道sybase IQ库怎么连接,之前连接都是用linux上的 dbisql
  • ¥15 安装llama-cpp-python==0.1.83失败
  • ¥20 管道轴向耦合水击问题
  • ¥60 补全networkx TODO部分。