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

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条回答 默认 最新

  • 波塞冬的祝福 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条)

报告相同问题?