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

JS如何将两个数组合并为对象:首数组值为键,第二数组为值

JavaScript 两个数组按索引映射合并为键值对象实现方案

首先给出题目中定义的两个基础数组:

const en = ["mon",  "tue",  "wed",  "thu",  "fri",  "sat", "sun"];
const de = ["montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"];

需求是将第一个数组的元素作为对象键名,第二个数组同索引位置的元素作为对应键值,以下是几种常用的实现方式,可根据项目运行环境选择:

方法1:基础for循环实现

兼容性最好,所有JS环境都能运行,适合需要兼容低版本浏览器的场景:

const weekMap = {};
for (let i = 0; i < en.length; i++) {
  // 可根据需求加长度判断,避免键对应值为undefined
  weekMap[en[i]] = de[i];
}

运行后得到的weekMap结构如下:

{
  mon: "montag",
  tue: "Dienstag",
  wed: "Mittwoch",
  thu: "Donnerstag",
  fri: "Freitag",
  sat: "Samstag",
  sun: "Sonntag"
}

方法2:Object.fromEntries 简洁实现

现代JS环境(Chrome 73+、Node.js 12+ 及以上)推荐写法,代码最简洁:
Object.fromEntries的作用就是把[键, 值]格式的键值对列表转换为对象,我们只需要先把两个数组合并成键值对二维数组即可:

const weekMap = Object.fromEntries(
  en.map((key, idx) => [key, de[idx]])
);

方法3:reduce 函数式实现

ES6+ 环境通用,兼容性比Object.fromEntries更好,适合不需要兼容特别老的环境、又不想写for循环的场景:

const weekMap = en.reduce((result, currentKey, idx) => {
  result[currentKey] = de[idx];
  return result;
}, {});

注意:如果两个数组长度不一致,以上写法都会出现部分键对应值为undefined的情况,如果业务场景下两个数组可能不等长,建议在赋值前加索引越界判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:31:19