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

标签 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 -> 2

2 -> 5

3 -> 4

等等

我该如何去做呢?

最佳答案

您可以创建一个函数来选择一个随机元素,切出该元素,然后选择另一个随机元素:

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(' -> '));

关于javascript - 随机比较数组中的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50243746/

相关文章:

javascript - Angular : [$injector:unpr] Unknown provider:

java - 格式转换出现问题,出现奇怪的错误

c - Malloc 'ing 结构中的结构数组

java - android.content.res.Resources$NotFoundException : String resource ID #0x2 Database

javascript - JavaScript 中的最小最大和 - 如何获取 5 元素数组中 4 个元素的最小和和最大和

java - For循环应该打印出ArrayList属性和其他ArrayList属性

javascript - 创建一个指令以使 ng-keyup 成为备用搜索初始值设定项

javascript - Jquery 使用 switch 语句关注特定的输入元素

javascript - HTML/Javascript 货币转换器

c++ - 比较两个 C 风格字符串的 C++ For 循环的效率和可读性