我正在尝试将数组中的每个元素相互比较并输出结果。这本身就很简单,使用嵌套的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
等等
我将如何做到这一点?
答案 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));
}