es6方法创建一个随机数组的数组?

时间:2017-08-27 08:49:48

标签: javascript ecmascript-6

尝试创建值为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

}

2 个答案:

答案 0 :(得分:2)

您可以使用Array#from创建外部和内部数组。由于Array#from需要一个具有length属性的对象,因此您可以提供heightwidth作为长度,并使用回调生成数组所需的任何值。

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 )