JavaScript中如何将多个双元素数组转换为键值对对象?
JavaScript 二维键值数组转对象实现
现有如下格式的二维数组,每个子数组固定包含[键名, 键值]两个元素:
const arr = [['name', 'jack'],['age', 18]];
需要将其转换为普通键值对对象:{ name: 'jack', age: 18 },可通过以下两种常用方法实现:
- 方法1:使用原生
Object.fromEntries()(推荐,ES2019+ 环境支持)Object.fromEntries是JS原生提供的方法,专门用于将键值对结构的可迭代对象(包括符合格式的二维数组、Map实例)转换为普通对象,写法最简洁:
const result = Object.fromEntries(arr); console.log(result); // { name: 'jack', age: 18 }
- 方法2:使用
Array.prototype.reduce()(兼容低版本JS环境)
如果需要兼容不支持ES2019的运行环境,可以用reduce方法遍历数组,逐一向初始空对象中写入键值对:
const result = arr.reduce((targetObj, [key, value]) => { targetObj[key] = value; return targetObj; }, {}); // 传入空对象作为累加初始值 console.log(result); // { name: 'jack', age: 18 }
注意:如果子数组中的键名不是字符串或Symbol类型,JS会自动将其转换为字符串类型作为对象的键。
内容的提问来源于stack exchange,提问作者quang
相关产品推荐
相关产品推荐

