例如,我想创建一些调试数据数组,我需要一个只需要所需数组长度的函数,并返回几个具有随机数据值的道具的对象数组.
有没有办法在没有for循环的情况下完成这个功能?问题的原因是我有这个i我不需要的变量.
const generateData = (count) => {
let data = []
for (let i = 0; i < count; i++)
data.push({
foo: Math.round(Math.random() * 100),
bar: Math.random() > 0.5
})
return data
}
Run Code Online (Sandbox Code Playgroud)
您可以使用一次创建所有数组Array.from,如果需要,无需任何中间变量名称的声明或使用:
const generateData = length => (
Array.from(
{ length },
() => ({
foo: Math.round(Math.random() * 100),
bar: Math.random() > 0.5
})
)
);
console.log(generateData(5));Run Code Online (Sandbox Code Playgroud)
您可以立即创建所需大小的数组,然后将每个项目映射到您需要的随机启动值,而不是将每个迭代推送到目标数组中.
function initArray(amount) {
return [...new Array(amount)].map(() => ({
foo: Math.round(Math.random() * 100),
bar: Math.random() > 0.5
}));
}
console.log(initArray(5));Run Code Online (Sandbox Code Playgroud)
实际上,这仍然是一个迭代但具有更多功能的方法.