javascript - 我有两个数组,两个数组都有数据,但都有 field_id 所以我想要合并数组
问题描述
我有两个数组,我想合并两个数组,但数组 1 与 2 合并并创建新数组在新数组中也有 array1 和 array2 数据,但不重复条目。
我尝试使用 concat 函数,但它没有用
阵列 1:
[[id: 45,
name: Tv,
active: false,
], [id: 56,
name: Car,
active: true,
][id: 60,
name: bus,
active: false,
]]
阵列 2:
[[id: 45,
company: sony,
size: 32,
price: 451
],
[id: 56,
company: suzuki,
size: L,
price: 3000
]]
我想要这样的数据:
[[id: 45,
name: tv,
active: false,
company: sony,
size: 32,
price: 451
],
[id: 56,
name: car,
active: true,
company: suzuki,
size: M,
price: 3000
],
id: 60,
name: bus,
active: false]]
但是如果您使用此数据在 javascript 中的对象中创建对象
解决方案
您可以使用以下方法来合并任意数量的数组:
- 将所有项目合并到一个数组中
- 获取一组唯一 ID
- 合并所有具有相同 id 的对象
const arr1 = [{ id: 45, name: "Tv", active: false }, { id: 56, name: "Car", active: true }, {id: 60, name: "bus", active: false }];
const arr2 = [{ id: 45, company: "sony", size: 32, price: 451 }, { id: 56, company: "suzuki", size: "L", price:3000 }];
const arr3 = [{ id: 45, type: 'electronics' }];
const mergeArrays = (...arrays) => {
const all = [].concat.apply([], arrays);
const ids = new Set(all.map(item => item.id));
return Array.from(ids).map(id =>
Object.assign({}, ...all.filter(item => item.id === id))
);
};
console.log(mergeArrays(arr1, arr2, arr3));
推荐阅读
- python - 如何在 PyCharm 中制作部分
- sql - Alias 如何提高性能
- apache-nifi - Apcahe NIFI -- 无法配置 ConsumeKafkaRecord
- java - PDFTron HTML 到 PDF 转换失败和错误代码 0
- javascript - `for of` 循环是否重新评估过滤后的数组?
- google-chrome-extension - 你能打开多个使用 chrome.runtime.onMessage.addListener 的 Chrome 扩展页面吗?
- ruby-on-rails - 当网站出现在 Google 搜索中时,Heroku 应用程序会收到流量
- python - 保存和计算列表中所有元组的值
- r - RStudio:调试功能:查看带有注释的源代码
- kotlin - Kotlin channel.receive() 在 withTimeout() 块中使用时不会超时