gpt4 book ai didi

javascript - 两个没有重复对的嵌套 for/循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:38 26 4
gpt4 key购买 nike

我们有数组:

var arr = [0,1,2];

和循环:

for ( var i=0; i<arr.length; i++ ) {
for ( var j=0; j<arr.length; j++ ) {
if ( arr[i] == arr[j] ) continue;
console.log(arr[i], arr[j]);
}
}

和输出:

0,1 //a--|
0,2 //b--|--|
1,0 //a--| |
1,2 //c-----|--|
2,0 //b-----| |
2,1 //c--------|

正如我们所见,有重复的对(在评论中 a、b 和 c 出现了两次)

我们摆脱重复对的唯一方法是将已经“匹配”的对存储在某种内存中?

var mem = {};

for ( var i=0; i<arr.length; i++ ) {
for ( var j=0; j<arr.length; j++ ) {
var left = i;
var right = j;
if ( left > right ) {
var temp = right;
right = left;
left = temp;
}

if ( arr[i] == arr[j] || mem[arr[left]+","+arr[right]] ) continue;

console.log(arr[i], arr[j]);
mem[arr[left]+","+arr[right]] = true;
}
}

和输出:

0,1
0,2
1,2

但这需要额外的内存(对于更大的数组,它需要很多......)

有没有其他不存储任何额外内容的方法?

最佳答案

如果你的输入数组是唯一的,你为什么不从 i+1 开始你的 j

for ( var i=0; i<arr.length; i++ ) {
for ( var j= i + 1 ; j<arr.length; j++ ) {
console.log(arr[i], arr[j]);
}
}

关于javascript - 两个没有重复对的嵌套 for/循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com