javascript - 合并两个对象数组并添加一个新的键和值
问题描述
我有 2 个基于“Form_Name”键值的数组来合并一个添加了新键和值“isChecked”的数组。
阵列一
arrayOne = [
{id: 11, Form_Name: "form name One", isChecked: true}
{id: 11, Form_Name: "form name Two", isChecked: true}];
数组二
arrayTwo = [
{Form_Name: "form name One", Form_AddDate: "2019-05-15T11:03:18.05"}
{Form_Name: "form name Two", Form_AddDate: "2019-05-15T11:03:18.05"}
{Form_Name: "form name Three", Form_AddDate: "2019-05-15T11:03:18.05"}
{Form_Name: "form name Four", Form_AddDate: "2019-05-15T11:03:18.05"}];
预期的合并数组
mergedArray = [
{Form_Name: "form name One", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: true}
{Form_Name: "form name Two", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: true}
{Form_Name: "form name Three", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: false}
{Form_Name: "form name Four", Form_AddDate: "2019-05-15T11:03:18.05", isChecked: false}]
我试过如下
const mergedArray = [];
for (let i = 0; i < arrayTwo.length; i++) {
mergedArray.push({
...arrayTwo[i],
...(arrayOne.find((itmInner) => itmInner.Form_Name === arrayTwo[i].Form_Name))}
);
}
console.log('merged array result', mergedArray);
解决方案
const hasChecked = new Set(arrayOne.map(it => it.Form_Name));
const result = arrayTwo.map(it => ({ ...it, isChecked: hasChecked.has(it.Form_Name) }));
通过创建一组检查的表单名称,您可以轻松地映射到第二个对象数组,并添加一个isChecked
属性。
推荐阅读
- mysql - MySQL 5.7 - 错误 sql_mode=only_full_group_by
- python - 如何使用 python 脚本获取 MacOS 笔记本电脑的电池百分比?
- python - python logging 模块默认在哪里写日志?
- php - Laravel Valet 安装后无法解析站点
- visual-studio - 用于颠覆和/或 BitBucket 的 VS2017 SSIS 版本控制
- sql - 基于两个不同的连接从表中返回两条数据
- mysql - 提高一对多连接的性能
- bash - 如何在 Bash 中将带有空格的数组作为函数参数传递
- sql - 如何限制选择每台设备的最后几天结果
- c - C如何在无符号整数指针之间进行异或