按键合并对象,将其他所有属性拼接为数组
创始人
2024-11-02 14:00:20
0

我们可以使用 reduce 和 Object.entries 来实现这个功能。以下是一个使用 ES6 语法的示例代码:

const data = [
  { id: 1, name: 'John', age: 21 },
  { id: 2, name: 'Jane', age: 25 },
  { id: 3, name: 'Steve', age: 24 },
  { id: 4, name: 'Mary', age: 27 },
  { id: 1, chat: 'Hello' },
  { id: 2, chat: 'Hi' },
  { id: 4, chat: 'Bye' },
  { id: 2, message: 'How are you?' },
];

const merged = data.reduce((acc, [key, value]) => {
  if (!acc[key]) {
    acc[key] = { [key]: value, others: [] };
  } else {
    acc[key].others.push(value);
  }
  return acc;
}, {});

const result = Object.values(merged).map((item) => ({
  ...item[key],
  ...Object.assign({}, ...item.others),
}));

console.log(result);
// 输出结果:
// [
//   { id: 1, name: 'John', age: 21, chat: 'Hello' },
//   { id: 2, name: 'Jane', age: 25, chat: 'Hi', message: 'How are you?' },
//   { id: 3, name: 'Steve', age: 24 },
//   { id: 4, name: 'Mary', age: 27, chat: 'Bye' }
// ]

在上面的示例代码中,我们首先通过 reduce 函数创建一个对象,将数据按照 id 进行分组,并将其他属性拼接成一个数组。然后使用 Object.values() 将结果转换为数组,并使用 Object.assign() 合并对象中的属性。最终输出合并后的结果。

相关内容

热门资讯

教学盘点!(wePokE)软件... 教学盘点!(wePokE)软件透明挂,wepoke辅助挂,详细教程(有挂介绍)-哔哩哔哩;(需添加指...
我来分享!aapoker辅助工... 相信很多朋友都在电脑上玩过吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家带来了手机版,这...
十分钟了解!众合推扑克有辅助,... 十分钟了解!众合推扑克有辅助,fishpoker下载,详细教程(有挂教程)-哔哩哔哩;WPK必备黑科...
总算了解!来玩德州app有挂,... 您好,鱼扑克发牌规律这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这...
每日必看推荐!德扑统计软件,w... 每日必看推荐!德扑统计软件,wepoke辅助透视教程,详细教程(有挂介绍)-哔哩哔哩;wepoke辅...
总算清楚!(wepOkE)软件... 总算清楚!(wepOkE)软件透明挂,德扑统计软件,详细教程(有挂教学)-哔哩哔哩;玩家在wepOk...
透视好友!德州ai辅助app,... 透视好友!德州ai辅助app,手机云扑克辅助是真的假的,详细教程(有挂了解)-哔哩哔哩;WPK必备黑...
科技通报!微扑克专用辅助程序用... 科技通报!微扑克专用辅助程序用的啊,云扑克是否有外挂,详细教程(有挂教学)-哔哩哔哩1、玩家可以在软...
查到实测辅助!wepower使... 查到实测辅助!wepower使用说明书,鱼扑克app ai,详细教程(有挂教学)-哔哩哔哩;超受欢迎...
透视透明!(wePoKe)软件... 透视透明!(wePoKe)软件透明挂,来玩app有挂,详细教程(有挂教学)-哔哩哔哩;原来确实真的有...