如何在Javascript中创建具有随机x和y坐标的对象列表?

时间:2019-02-18 15:20:48

标签: javascript arrays

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);
// }

1 个答案:

答案 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)。