如何不使用临时变量,用Array.from单行写法生成对象数组?
优化后的写法
你可以直接利用数组方法的内置能力,避免使用临时变量,以下是几种更简洁的方案:
方案1:使用Array.from的映射参数
Array.from支持第二个参数作为映射函数,直接生成目标数组,无需额外的forEach和push操作:
const data = Array.from({ length: 1 }, () => ({ number: Math.floor(Math.random() * 10) })); console.log(data);
方案2:Array.fill + map
先创建指定长度的数组并填充占位值,再通过map生成每个对象:
const data = Array(1).fill().map(() => ({ number: Math.floor(Math.random() * 10) })); console.log(data);
注:
Array(1)创建的是空数组,fill()会将其填充为[undefined],这样map才能遍历到元素。
方案3:展开运算符 + map
通过展开运算符将空数组转为可遍历的数组,再用map生成结果:
const data = [...Array(1)].map(() => ({ number: Math.floor(Math.random() * 10) })); console.log(data);
这些写法都直接生成目标数组,代码更紧凑,也符合函数式编程的思路,避免了不必要的临时变量。
内容的提问来源于stack exchange,提问作者Tina Glenn
相关产品推荐
相关产品推荐

