javascript - 在ES6中使用单个公共键合并X个对象数组的数组
问题描述
所以我在数组中有多个对象,它们遵循类似于以下的模式。
所有对象数组的长度始终相同。yX
(每个对象数组中甚至可以有 100 个 yX(es) 和 100 个 xy 对。yX 是不同的,但总是从 0 开始并以 1 递增(y0, y1, y2, y3, y4, .. .)。
const data = [
[{x: 0, y0: 1}, {x: 1, y0: 2}, {x: 2, y0: 3}],
[{x: 0, y1: 2}, {x: 1, y1: 3}, {x: 2, y1: 5}],
[{x: 0, y2: 1}, {x: 1, y2: 2}, {x: 2, y2: 3}]
]
如何轻松合并它们,以便获得这样的结果?
const newData = [
{x: 0, y0: 1, y1: 2, y0: 1},
{x: 1, y0: 2, y1: 3, y2: 2},
{x: 2: y0: 3, y1: 5, y2: 3}
]
可能有一些我找不到的简单解决方案,但是我迷失了所有不同的forEach
, .map
,Object.assign()
等组合。
解决方案
您可以合并数组并获取同一索引的所有属性。
const
data = [
[{ x: 0, y0: 1 }, { x: 1, y0: 2 }, { x: 2, y0: 3 }],
[{ x: 0, y1: 2 }, { x: 1, y1: 3 }, { x: 2, y1: 5 }],
[{ x: 0, y2: 1 }, { x: 1, y2: 2 }, { x: 2, y2: 3 }]
],
result = data.reduce((r, a) => a.map((o, i) => ({ ...r[i], ...o })), []);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- sql - 将查询结果合并为单行
- microsoft-graph-api - Microsoft Outlook 日历图 API 增量不返回已删除的事件?
- sql-server - 如何在 laravel 中格式化 sql server 的日期时间?
- python - 检查输入时出现 Keras 错误
- javascript - Stack Overflow JavaScript 代码编辑器:可直接访问的全局对象“窗口”成员
- python - 从 fileA 的单词中创建一个列表,并在 python 中检查该列表针对 fileB
- javascript - 使用 Javascript 通过 Telnet 进行通信?
- asp.net-core-2.0 - 控制器脚手架在 ASP.NET Core 2.0 的 VS 2017 预览版中引发错误
- android - 退出线程的 Looper
- asp.net-mvc - ASP.NET 的 HttpPost 属性函数在表单提交后似乎没有执行