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
相关产品推荐
相关产品推荐

