js数组数据处理

// 处理前数据
let arr = [
{id:'1',name:'dwejdww'},
{id:'2',name:'dfrefrew'},
{id:'1',name:'bfdbfdb'},
{id:'3',name:'rfererg'},
{id:'2',name:'dwejdfww'},
]
// 处理后数据
arr=[
{id:'1',name:'dwejdww,bfdbfdb'},
{id:'2',name:'dfrefrew,dwejdfww'},
{id:'3',name:'rfererg'},
]
// 开始处理
// 1.先定义一个空对象
let map = {}
// 1.遍历数组
arr.map(data=>{
    // 判断id存在map对象中不
    if(!map[data.id]){ //不存在
        map[data.id] = data.name //给map赋值
    } else { //存在
        map[data.id] = += ','+data.name
    }
})
let resultArr = [];
for (let key in map) {
  resultArr.push({ id: key, name: map[key] });
}
// conole.log(resultArr)

数据版本二

// 数据处理前
[
    {"id":"1001","name":"值1","value":"111"},
    {"id":"1001","name":"值1","value":"11111"},
    {"id":"1002","name":"值2","value":"25462"},
    {"id":"1002","name":"值2","value":"23131"},
    {"id":"1002","name":"值2","value":"2315432"},
    {"id":"1003","name":"值3","value":"333333"}
]
// 数据处理后
[
    {
        "id": "1001",
        "name": "值1",
        "data": [
            {"id": "1001", "name": "值1", "value": "111"},
            { "id": "1001", "name": "值1", "value": "11111"}
        ]
    },
    {
        "id": "1002",
        "name": "值2",
        "data": [
            { "id": "1002",  "name": "值2", "value": "25462" },
            { "id": "1002", "name": "值2", "value": "23131"},
            {"id": "1002", "name": "值2","value": "2315432" }
        ]
    },
    {
        "id": "1003",
        "name": "值3",
        "data": [
            {"id": "1003", "name": "值3", "value": "333333" }
        ]
    }
]

let map = {},dest = [];
for(let i = 0; i < arr.length; i++){
    let ai = arr[i];
    if(!map[ai.id]){
        dest.push({
            id: ai.id,
            name: ai.name,
            data: [ai]
        });
        map[ai.id] = ai;
    }else{
        for(let j = 0; j < dest.length; j++){
            let dj = dest[j];
            if(dj.id == ai.id){
                dj.data.push(ai);
                break;
            }
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值