zoukankan      html  css  js  c++  java
  • 数组对象相同的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
  • 相关阅读:
    用对象模式实现QTP的远程调用
    Python 常用类库
    User32.dll 函数的相关方法整理
    python ConfigParser – 配置文件解析
    python 中的 __init__()解释
    Access to the database file is not allowed. [ File name = ***\DataBase.sdf
    在遗忘中成长
    在MVC3里如何关闭Form标签
    javascript 中写cookie
    .NET之死和观念的力量【】
  • 原文地址:https://www.cnblogs.com/Ao-min/p/13805683.html
Copyright © 2011-2022 走看看