js对象数组根据多个相同字段合并

首先,需要明确合并的规则。如果要按照多个字段来合并,我们需要将这些字段的值拼接成一个唯一的标识,然后再根据这个标识进行合并。

示例代码:

// 原始数组
const arr = [
  { id: 1, name: 'Tom', age: 20 },
  { id: 2, name: 'Jerry', age: 22 },
  { id: 3, name: 'Alice', age: 20 },
  { id: 4, name: 'Bob', age: 22 }
];

// 要合并的字段名称,按照顺序进行拼接
const fields = ['age', 'name'];

// 根据多个字段合并
const mergedArr = arr.reduce((acc, cur) => {
  const key = fields.map(field => cur[field]).join('_');
  const existItem = acc.find(item => item.key === key);
  if (existItem) {
    existItem.data.push(cur);
  } else {
    acc.push({
      key,
      data: [cur]
    });
  }
  return acc;
}, []).map(item => item.data);

console.log(mergedArr);

解释一下代码的思路:

  1. 先定义要合并的字段,这里是 agename

  1. 然后使用 reduce 方法遍历原始数组,将每个元素拼接成一个唯一的标识。

  1. 如果这个标识已经存在于结果数组中,则将当前元素添加到已有项的 data 数组中,否则将当前元素作为一个新的项添加到结果数组中。

  1. 最后再次遍历结果数组,提取其中的 data 字段,就得到了按照多个字段合并后的数组。

注意,这个示例中将多个字段的值用 _ 进行了拼接,如果字段中可能包含 _ 的话,需要使用其他的字符进行拼接,并且在合并的时候也要考虑这些字符的影响。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值