• 数组对象相同的key值合并,并且把对应的ID放到一个数组


    准备数据

    let list = [{ name: 'a', id: 1, age: 11 }, { name: 'b', id: 2, age: 22 }, { name: 'c', id: 3, age: 33 }, { name: 'a', id: 4, age: 44 }, { name: 'b', id: 5, age: 55 }];

    处理结果

    [{name:'a',id:[1,4]},{name:'b',id:[2,5]},{name:'c',id:[3]}]

    第一种:利用find查找的方式处理

    find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。

    <!--首先定义一个空数组--> var newList = [] list.forEach(item => { let newItem = newList.find((i) => i.name == item.name) if (!newItem) { console.log(newItem); newList.push({ name: item.name, id: [item.id] }) } else { newItem.id.push(item.id) } })

    第二中:利用reduce方法

    let Obj = list.reduce((pre,cur,index)=> { if(!pre[cur.name]){ pre[cur["name"]] =[cur.id] } else { pre[cur.name].push(cur.id) } return pre; },{}) let aff= Object.keys(Obj).map((item)=>{ console.log(item); return { name:item, id:Obj[item] }}) console.log(aff)

    第三种:使用hash对象

    var hash = {}; var i = 0; var res = []; list.forEach(function(item) { var name = item.name; hash[name] ? res[hash[name] - 1].id.push(item.id) : hash[name] = ++i && res.push({ id: [item.id], name: name, age: item.age }) });

    第四种:使用findIndex方法

    let arr2 = [] list.forEach((item, index) => { let b = arr2.findIndex(o => o.name === item.name); if (b == -1) { arr2.push({ name: item.name, age: item.age, id: [item.id] }) } else { arr2[b].id.push(item.id) } })
     
    转自于:https://www.cnblogs.com/wgy0528/archive/2004/01/13/13382124.html
  • 相关阅读:
    SQLSERVER Truncate使用注意事项
    SQLSERVER Truncate使用注意事项
    c#事件使用示例详解
    c#事件使用示例详解
    C#反射の反射泛型
    C#反射の反射泛型
    C#反射设置属性值和获取属性值
    1336:【例31】找树根和孩子
    1336:【例31】找树根和孩子
    1037:计算2的幂
  • 原文地址:https://www.cnblogs.com/Ao-min/p/13805683.html
Copyright © 2020-2023  润新知