JavaScript中如何最短创建键0-99值全为false的对象,优先使用Lodash?
JavaScript创建0-99为键、值全为false的对象一行实现方案
原生ES6+ 实现
- 方案1:使用
Object.fromEntries+Array.from,可读性最高:
const obj = Object.fromEntries(Array.from({ length: 100 }, (_, idx) => [idx, false]));
说明:先通过Array.from生成长度为100的数组,每一项返回[索引, false]的键值对数组,再通过Object.fromEntries直接转换为对象。
- 方案2:使用
Array.reduce,兼容性比Object.fromEntries稍好:
const obj = Array.from({ length: 100 }).reduce((res, _, idx) => (res[idx] = false, res), {});
说明:利用reduce的累加特性,初始值为空对象,每次遍历把对应索引的键赋值为false后返回累加对象。
Lodash 实现
你之前用keyBy没成功是缺少了自定义键的计算逻辑,正确写法如下:
- 方案1:
_.keyBy实现
const obj = _.keyBy(Array(100).fill(false), (_, idx) => idx);
说明:先生成长度100、值全为false的数组,keyBy第二个参数指定用数组索引作为生成对象的键。
- 方案2:
_.times+_.fromPairs实现
const obj = _.fromPairs(_.times(100, idx => [idx, false]));
说明:_.times直接生成100组键值对,再通过_.fromPairs转换为对象。
内容的提问来源于stack exchange,提问作者gnarois
相关产品推荐
相关产品推荐

