JavaScript中如何为数组值添加指定键后与另一键值对数组合并
实现方案
首先说明你给出的示例存在语法小问题:JS中键值对对象用{}包裹,数组用[]包裹,按照你给出的预期输出逻辑,默认第一个输入为公共属性对象,第二个为纯值数组,实现代码如下:
核心实现代码
// 输入1:公共属性对象 const commonSubtaskInfo = { subtask_assigned_to: "rohit", status: 0, subtask_description: "described something" }; // 输入2:纯值数组 const subtaskNameList = ["value 1", "value 2"]; // 合并生成结果 const result = subtaskNameList.map(subtaskName => { // 为每个值添加subtask_name键,再和公共属性合并 return { subtask_name: subtaskName, ...commonSubtaskInfo }; }); console.log(result);
输出结果
运行后result的结构和你预期完全一致:
[ { subtask_name: "value 1", subtask_assigned_to: "rohit", status: 0, subtask_description: "described something" }, { subtask_name: "value 2", subtask_assigned_to: "rohit", status: 0, subtask_description: "described something" } ]
扩展场景:第一个输入为多对象数组
如果你所说的第一个输入确实是包含多个属性对象的数组,要实现两组元素的全组合合并,可以用以下写法:
const arr1 = [ {subtask_assigned_to: "rohit", status: 0, subtask_description: "desc1"}, {subtask_assigned_to: "jack", status: 1, subtask_description: "desc2"} ]; const arr2 = ["value1", "value2"]; const fullResult = arr1.flatMap(commonItem => arr2.map(name => ({subtask_name: name, ...commonItem})) );
语法说明
- 用
Array.prototype.map()遍历数组生成新结构,不会修改原数组 - ES6展开运算符
...用来合并对象属性,如果需要兼容低版本JS环境,可以替换为Object.assign写法:return Object.assign({subtask_name: subtaskName}, commonSubtaskInfo);
内容的提问来源于stack exchange,提问作者Rohit Gowda
相关产品推荐
相关产品推荐

