listOfObjects = listOfObjects.concat(Array(10000000).fill({l: 50, b: 50, color: "#000000"}).map((s) => {
s.x = Math.floor(Math.random() * (mapSquareSize));
s.y = Math.floor(Math.random() * (mapSquareSize));
return s;
}));
listOfObjects数组应具有属性x,y,l,b和color的对象。我已经使用Array fill()函数设置了l,b和color变量。我希望x和y坐标对于ListOfObjects中的每个对象都是唯一的。但是,上面的代码只是给每个对象相同的随机x和y坐标。
我为此使用了for循环,但是一个朋友告诉我,这样的解决方案会更有效。
// for (var i = 1 ; i <= 10000000 ; i++)
// {
// var rock = new Object();
// rock.x = Math.floor(Math.random() * (mapSquareSize)) + 0 ;
// rock.y = Math.floor(Math.random() * (mapSquareSize)) + 0 ;
// rock.l = 50 ;
// rock.b = 50 ;
// rock.color = "#000000";
// listOfObjects.push(rock);
// }
答案 0 :(得分:2)
有Array.from
:
const result = Array.from({ length: 10000000 }, () => ({
x: Math.floor(Math.random() * (mapSquareSize)),
y: Math.floor(Math.random() * (mapSquareSize)),
l: 50,
b: 50,
color: "#000000",
}));
这可以按预期工作,并且将在每次迭代期间创建一个新对象。它的功能与for循环完全相同,只是更加优雅(IMO)。