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

JavaScript 如何基于列表(数组)简洁快速初始化对象

实现方案

二维键值对列表转对象

针对[['prop1','value1'], ['prop2','value2']]这类固定键值对结构的列表,直接使用原生Object.fromEntries()即可一行完成对象初始化,无需手写循环:

const lst = [['prop1','value1'], ['prop2','value2']]
const b = Object.fromEntries(lst);
// 输出结果:{prop1: 'value1', prop2: 'value2'}

该API是ES2019标准新增的原生方法,适配所有现代浏览器及Node.js 12及以上版本。

动态属性列表配合映射逻辑生成对象

针对你补充的「动态长度属性列表+自定义值生成逻辑」的场景,只需要先通过Array.prototype.map把属性列表转换为[键名, 键值]格式的二维数组,再传入Object.fromEntries()即可,不需要逐一枚举列表元素:

const l = ['prop1', 'prop2'];
const fx = str => str.substring(1);

const b = Object.fromEntries(l.map(str => [str, fx(str)]));
// 输出结果:{prop1: 'rop1', prop2: 'rop2'}

如果需要兼容不支持Object.fromEntries的老旧环境,可以用reduce实现等价的单行写法:

const b = l.reduce((acc, str) => (acc[str] = fx(str), acc), {});

目前JavaScript标准中不支持你提到的「在对象字面量内直接写循环批量生成属性」的语法,所有动态批量生成属性的实现,本质都是先构造键值对集合,再合并为最终对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:09:41