首页 > 解决方案 > 在随机位置用 0 填充数组

问题描述

我有一个看起来像这样的数组

[ [1], [14, 17], [27], [30, 35], [42, 45], [56, 59], [69], [79], [81, 83, 87]]

我想遍历这个数组并用 0 填充数组内的数组,直到它们每个数组都有 3 个值。但我不想只填充开头或结尾,我希望随机放置 0。我正在尝试制作一张 1-90 的宾果卡,以便将数字随机放置在每一列中。

所以最终结果看起来像

[ [0, 1, 0], [14, 17, 0], [0, 0, 27], [0, 30, 35], [42, 0, 45], [56, 59, 0], [69, 0, 0], [0, 0, 79], [81, 83, 87]]

谢谢

标签: javascriptarrays

解决方案


您可以使用map方法和while循环来执行此操作,只要当前元素长度 < 3,它将在映射迭代中当前元素的随机索引(最大索引为 2)处插入 0。

const data = [ [1], [14, 17], [27], [30, 35], [42, 45], [56, 59], [69], [79], [81, 83, 87]]
const result = data.map(a => {
  let arr = [...a]
  
  while (arr.length < 3) {
    const index = parseInt(Math.random() * 3)
    arr.splice(index, 0, 0)
  }

  return arr
})

console.log(result)


推荐阅读