[英]es6 way to create an array of arrays with random numbers?
尝试创建值为1或0的数组的数组。但是每个数组都具有[0,0,0,0,0,0]或[1,1,1,1,1,1],因为fill不是回调。 我需要像[0、1、0、0、1]这样的随机变量。创建值0或1的数组数组的es6方法是什么?
const createBoard = function({width, height}) {
const board = Array(height).fill([])
.map(row => row.concat( Array(width).fill( Math.round(Math.random()) ) ))
return board
}
createboard({width: 5, height: 10})
我可以使用for循环来做到这一点,但我希望它更具声明性。
const createBoard = function({width, height}) {
let board = []
for(let row = 0; row < height; row++) {
board.push([])
for(let cell = 0; cell < width; cell++) {
board[row].push(Math.round(Math.random()))
}
}
return board
}
您可以使用Array#from创建外部和内部数组。 由于Array#from需要带有length
属性的对象,因此您可以提供height
或width
作为长度,并使用回调函数生成数组所需的任何值。
const createBoard = ({width, height}) => Array.from({ length: height }, () => Array.from({ length: width }, () => Math.floor(Math.random() * 2) ) ); const board = createBoard({width: 5, height: 10}); console.log(JSON.stringify(board));
进行少量更改即可继续执行您的逻辑,这应该可行
x = Array(5).fill([]).map(x => (Math.random(0,1) < 0.5) ? 0 : 1 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.