javascript – 需要通过从另一个数组中随机挑选18个数字来构建一个新数组,并且在新数组中也有两次相同的数字

我正在为JavaScript Jquery类中的组项目制作匹配游戏.我有36个图像,我可以用于瓷砖.我希望游戏随机挑选其中的18个并将它们放入一个新阵列中.我还需要两次新数组中的这18个数字,因为新的数组将被洗牌,然后用于构建游戏板.

这是我的代码:

let objects = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29','30', '31', '32', '33', '34', '35', '36'],

function cardList () {
    var cardList = [36];
    for (i = 0; i < cardList.length; i+=2) {
        cardList[i] = objects[Math.floor(Math.round((Math.random()*36)+1))];
        cardList[i+1] = cardList[i];
    }
    return cardList;
}

我试图在此使用Chrome调试器,这不是创建所有数字,它只是创建两个初始数字.

必须有一个更好的方法来做到这一点,我已经看了几个匹配游戏的例子,其中大多数都有确切的卡需求数量,这可能会导致我的问题.

最佳答案
由于您(可能)不希望项目在结果中出现两次以上,因此您应该选择没有替换的项目.我就是这样做的:

const objects = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29','30', '31', '32', '33', '34', '35', '36'];
const getList = () => {
  const objs = objects.slice(0);
  const selected = [];
  for (let i = 0; i < 18; i++) {
    const index = Math.floor(Math.random() * objs.length);
    const [num] = objs.splice(index, 1);
    selected.push(num, num);
  }
  return selected;
};
console.log(getList());

转载注明原文:javascript – 需要通过从另一个数组中随机挑选18个数字来构建一个新数组,并且在新数组中也有两次相同的数字 - 代码日志