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

如何在JavaScript中从两个等长数组创建新的数组对象?

JavaScript 从两个数组构建指定结构的对象

给定两个数组,对应索引的元素一一关联:

var array1 = ['one', 'two', 'one', 'two'];
var array2 = ['3', '4', '5', '6'];

需要构建一个对象,以array1的元素作为键,将对应索引的array2元素按顺序归类存入,最终得到如下结构:

var arrayObj = {"one": [{"0":"3", "1":"5"} ],"two": [{"0":"4", "1":"6"}]}

实现方案

方案1:使用Array.prototype.reduce

const array1 = ['one', 'two', 'one', 'two'];
const array2 = ['3', '4', '5', '6'];

const arrayObj = array1.reduce((result, key, index) => {
  // 若当前键未初始化,创建包含空对象的数组
  if (!result[key]) {
    result[key] = [{}];
  }
  // 获取目标对象,以当前对象的键数量作为新索引存入值
  const target = result[key][0];
  target[Object.keys(target).length] = array2[index];
  return result;
}, {});

console.log(arrayObj);

方案2:使用普通for循环

const array1 = ['one', 'two', 'one', 'two'];
const array2 = ['3', '4', '5', '6'];
const arrayObj = {};

for (let i = 0; i < array1.length; i++) {
  const key = array1[i];
  const value = array2[i];
  
  if (!arrayObj[key]) {
    arrayObj[key] = [{}];
  }
  
  const targetObj = arrayObj[key][0];
  targetObj[Object.keys(targetObj).length] = value;
}

console.log(arrayObj);

说明

两种方案逻辑一致:

  • 遍历数组时,检查当前键是否已存在于结果对象中,不存在则初始化一个包含空对象的数组
  • 每次将array2对应的值,以目标对象当前的键数量作为索引,存入对象中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:01:40