随机地比较数组中的每个元素

时间:2018-05-09 00:02:43

标签: javascript arrays for-loop

我正在尝试将数组中的每个元素相互比较并输出结果。这本身就很简单,使用嵌套的for循环。

a = [1, 2, 3, 4, 5];

for(let i = 0; i < a.length; i++) {
   for(let k = i + 1; k < a.length; k++) {
      console.log(a[i] + ' -> ' + a[k]);
   }
 }

为此,输出将是

1 -> 2
1 -> 3
1 -> 4
1 -> 5
2 -> 3
2 -> 4
2 -> 5
3 -> 4
3 -> 5
4 -> 5

但我希望这些是随机的,例如像

这样的东西

1 - &gt; 2

2 - &gt; 5

3 - &gt; 4

等等

我将如何做到这一点?

2 个答案:

答案 0 :(得分:2)

你可以创建一个选择随机元素的函数,将该元素切片,然后选择另一个随机元素:

const arr = [1, 2, 3, 4, 5];
const randomElementsFromArr = () => {
  const randIndex = Math.floor(Math.random() * arr.length);
  const oneElement = arr[randIndex];
  const slicedArr = [...arr.slice(0, randIndex), ...arr.slice(randIndex + 1)];
  const anotherElement = slicedArr[Math.floor(Math.random() * slicedArr.length)];
  return [oneElement, anotherElement];
};
console.log(randomElementsFromArr().join(' -> '));

答案 1 :(得分:0)

检查一下:

a = [1, 2, 3, 4, 5];
var output = new Array();

for(let i = 0; i < a.length; i++) {
   for(let k = i + 1; k < a.length; k++) {
      output.push(a[i] + ' -> ' + a[k]);
   }
 }

for(let b = 0; b < output.length; b++) {
   console.log(Math.floor(Math.random() * output.length));
}