You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从两个现有数组生成包含自定义额外属性的对象数组

实现方案

思路

通过数组map方法按索引匹配两个数组的对应元素,支持传入自定义属性名,再通过对象展开运算符合并额外需要添加的固定属性即可。

通用封装函数

可以直接复用下方的通用函数,灵活适配不同的属性名和额外属性需求:

/**
 * 基于两个数组生成对象数组
 * @param {Array} arr1 第一个输入数组
 * @param {String} key1 第一个数组元素对应的属性名
 * @param {Array} arr2 第二个输入数组
 * @param {String} key2 第二个数组元素对应的属性名
 * @param {Object} extraProps 要追加的额外固定属性,可选
 * @returns {Array} 生成的对象数组
 */
function generateObjectArray(arr1, key1, arr2, key2, extraProps = {}) {
  if (arr1.length !== arr2.length) {
    throw new Error('两个输入数组长度必须一致,避免索引错位');
  }
  return arr1.map((item, index) => ({
    [key1]: item,
    [key2]: arr2[index],
    ...extraProps
  }));
}

调用示例

对应你给出的输入场景,调用方式如下:

// 原始数组
const arr1 = ["A","B","C"];
const arr2 = [1,2,3];

// 调用函数生成目标结果
const result = generateObjectArray(arr1, 'name', arr2, 'id', {trash: false});

输出的result就是你需要的目标结构:

[{name: "A", id: 1, trash: false},{name: "B", id: 2, trash: false},{name: "C", id: 3, trash: false}]

简化版写法

如果不需要复用逻辑,也可以直接写单次调用的简化代码:

const arr1 = ["A","B","C"];
const arr2 = [1,2,3];
const result = arr1.map((item, index) => ({
  name: item,
  id: arr2[index],
  trash: false
}));

注意事项

  • 需保证两个输入数组长度一致,否则会触发校验报错,也可以根据业务需求调整为以短数组长度为准等其他逻辑。
  • 额外属性如果需要动态取值,也可以修改逻辑为传入生成函数,按索引计算属性值。

内容的提问来源于stack exchange,提问作者MaHo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:36:03