如何在JavaScript中将两个数组合并为键值对结构的对象?
将两个数组合并为键值对对象的几种方法
这里有几个实用的方法可以把你的两个数组转换成目标键值对对象:
1. 基础for循环(直观易懂)
这是最直接的实现方式,适合所有场景,新手也能快速理解:
let x = ['name','age','id']; let y = ['kyle',50,5050]; const result = {}; // 遍历键数组,逐个赋值 for (let i = 0; i < x.length; i++) { result[x[i]] = y[i]; } console.log(result); // 输出:{name:'kyle', age:50, id:5050}
如果两个数组长度不一致,x中超出y长度的键会被赋值为undefined,y中超出的元素则会被忽略。
2. 使用Array.reduce(函数式写法)
用reduce可以更简洁地完成转换,属于函数式编程风格:
let x = ['name','age','id']; let y = ['kyle',50,5050]; const result = x.reduce((acc, key, index) => { acc[key] = y[index]; return acc; }, {}); // 初始值为空对象 console.log(result);
reduce会遍历x数组,每次把当前键和对应的y值存入累加器acc,最后返回完整的对象。
3. ES6+的Object.fromEntries + map(现代简洁写法)
利用ES6新增的Object.fromEntries方法,配合map生成键值对数组,一步到位:
let x = ['name','age','id']; let y = ['kyle',50,5050]; const result = Object.fromEntries( x.map((key, index) => [key, y[index]]) ); console.log(result);
x.map(...)会生成一个二维数组[['name','kyle'], ['age',50], ['id',5050]],Object.fromEntries会把这个数组直接转换成键值对对象。
内容的提问来源于stack exchange,提问作者Mari
相关产品推荐
相关产品推荐

