程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何连接重复的对象数组值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何连接重复的对象数组值?

开发过程中遇到如何连接重复的对象数组值的问题如何解决?下面主要结合日常开发的经验,给出你关于如何连接重复的对象数组值的解决方法建议,希望对你解决如何连接重复的对象数组值有所启发或帮助;

我有一个包含重复的 ID 属性的对象,我想将它们减少到一个数组。我只是想出了一种方法来查找唯一的 ID,但是如何连接 name 属性?

const x = [
   {ID: 1,name: 'green'},{ID: 2,name: 'red'},{ID: 1,name: 'blue'}
]

想要的结果:

[
   {ID: 1,name: 'green,blue'},name: 'red'}
]

解决方法

简单的 reduce 组合并使用 Object.values 来获得您想要的结果。

const x = [{
    id: 1,name: 'green'
  },{
    id: 2,name: 'red'
  },{
    id: 1,name: 'blue'
  }
]

const result = Object.values(x.reduce((acc,obj) => {
  if (acc[obj.id]) {
    acc[obj.id].name += "," + obj.name;
  } else {
    acc[obj.id] = { ...obj
    };
  }
  return acc;
},{}));

console.log(result);

,

  1. 使用 .reduce 迭代 x,同时使用 @H_434_3@map 将 id 存储为 key,将数组元素存储为 value立>
  2. 如果 @H_434_3@map 已经有这个 id 的记录,只需将名称连接到它
  3. 否则,添加一条新记录
  4. 最后,values 的 @H_434_3@map 将包含由 id 分组的所有数组元素,并让 name 包含所有元素。立>
  5. @H_618_68@

    const x = [ { id: 1,name: 'green' },{ id: 2,name: 'red' },{ id: 1,name: 'blue' }
    ];
    
    const res = [...x.reduce((map,{id,namE}) => {
      if(map.has(id)) map.get(id).name += `,${name}`;
      else map.set(id,{ id,name });
      return map;
    },new Map)
    .values()
    ];
    
    console.log(res);

    ,

    使用 Set 获取 unique ids 列表的简单解决方案。

    然后,使用 filter 和 @H_434_3@map 我们得到所有匹配的对象,并将名称join 放在一起。

    const x = [
       {id: 1,name: 'green'},{id: 2,name: 'red'},{id: 1,name: 'blue'}
    ]
    
    const result = [];
    const uniquEIDs = [...new Set(x.map(item => item.id))];
    const merged = uniquEIDs.forEach((id) => {
      
      // Matching ids
      const match = x.filter((o) => o.id === id);
      
      // Names of matching ids
      const names =  match.map(x => x.Name);
      
      // Add new
      result.push({
        id,names: names.join(',')
      });
    });
    
    console.log(result);

大佬总结

以上是大佬教程为你收集整理的如何连接重复的对象数组值全部内容,希望文章能够帮你解决如何连接重复的对象数组值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: