写一个方法,将2N个元素的数组随机两两组合

在前端开发中,如果你想要将一个包含2N个元素的数组随机两两组合,你可以使用JavaScript的ArrayMath对象来实现。以下是一个示例方法,它接受一个数组作为参数,并返回一个新的数组,其中包含原始数组中元素的随机两两组合:

function randomPairs(array) {
  if (array.length % 2 !== 0) {
    throw new Error('数组必须包含偶数个元素');
  }

  // 创建一个数组的副本,以便我们可以对其进行排序而不影响原始数组
  const shuffledArray = [...array];

  // 使用Fisher-Yates算法随机排序数组
  for (let i = shuffledArray.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];
  }

  // 创建结果数组,用于存储随机两两组合
  const pairs = [];

  // 遍历排序后的数组,并将其元素两两组合到结果数组中
  for (let i = 0; i < shuffledArray.length; i += 2) {
    pairs.push([shuffledArray[i], shuffledArray[i + 1]]);
  }

  return pairs;
}

// 示例用法:
const array = [1, 2, 3, 4, 5, 6];
const pairs = randomPairs(array);
console.log(pairs); // 输出可能是:[[3, 6], [1, 5], [2, 4]](结果每次运行时都可能不同)

这个方法首先检查输入数组是否包含偶数个元素。然后,它创建一个数组的副本,并使用Fisher-Yates算法对副本进行随机排序。最后,它遍历排序后的数组,并将元素两两组合到结果数组中。

posted @ 2024-12-25 06:16  王铁柱6  阅读(7)  评论(0编辑  收藏  举报