数组里相同key并且相同name的元素分组

js数组分组
要求:把数组里相同key并且相同name的元素分组,
源数据:
let data =[ {key:'xxx',name:'yyy',age:1,money:123}, {key:'sss',name:'yyy',age:2,money:123}, {key:'sss',name:'yyy',age:3,money:123}, {key:'sss',name:'zzz',age:4,money:123}, {key:'xxx',name:'yyy',age:5,money:123}, {key:'xxx',name:'yyy',age:6,money:123}, {key:'zzz',name:'yyy',age:7,money:123}, {key:'xxx',name:'zzz',age:8,money:123}, {key:'zzz',name:'xxx',age:9,money:123}, ]

//写法1
let json = {}
data.forEach((ele)=>{
    json[ele.key+ele.name] = json[ele.key+ele.name] || [ ]
    json[ele.key+ele.name].push(ele)
})

//写法2:
let json={}
data.forEach((ele)=>{
    if(!json[ele.key+ele.name]){
        json[ele.key+ele.name]=[ ];
        json[ele.key+ele.name].push(ele)
    }else{
        json[ele.key+ele.name].push(ele)
    }
})
//写法3:
let json={}
       for(let i = 0;i<data.length;i++){
            let key = data[i].key
            let name = data[i].name
            if(typeof json[key+name]=='undefined'){
                json[key+name]=[];
                json[key+name].push(data[i])
            }else{
                json[key+name].push(data[i])
            }
        }
//写法4:
let tempList = [];
        let resultList = [];
        data.map((item) => {
            if (!tempList.some(items=>{return (items.key === item.key && items.name ===item.name)})) {
                tempList.push({key:item.key,name:item.name});
                resultList.push({
                    key:item.key,
                    name:item.name,
                    list:[]
                })
            }
        });
        resultList.map((item) => {
            data.map((items) => {
                if (item.name === items.name && item.key === items.key) {
                    item.list.push(items);
                }
            });
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值