JS - 没有for或while循环重复动作N次?

std*_*nik 3 javascript loops

例如,我想创建一些调试数据数组,我需要一个只需要所需数组长度的函数,并返回几个具有随机数据值的道具的对象数组.

有没有办法在没有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)

Cer*_*nce 5

您可以使用一次创建所有数组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)


Sat*_*Ama 5

您可以立即创建所需大小的数组,然后将每个项目映射到您需要的随机启动值,而不是将每个迭代推送到目标数组中.

    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)

实际上,这仍然是一个迭代但具有更多功能的方法.

  • 好的代码,但如果你能为那些遇到它的人添加一些解释,那就太好了. (2认同)