尝试创建值为1或0的数组数组。但是每个数组都有[0,0,0,0,0,0]或[1,1,1,1,1,1]不是回调。我需要它像[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
}
答案 0 :(得分:2)
您可以使用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));
答案 1 :(得分:2)
通过微小的改变继续你的逻辑,这应该工作
x = Array(5).fill([]).map(x => (Math.random(0,1) < 0.5) ? 0 : 1 )