我想将同一个数组的所有元素相互匹配,但一个元素不能与自身匹配。
我得到的代码如下:
function combine(list) {
var pairs = new Array((list.length * (list.length - 1)) / 2),
pos = 0;
for (var i = 0; i < list.length; i++) {
for (var j = i + 1; j < list.length; j++) {
pairs[pos++] = [list[i], list[j]];
}
}
return pairs;
}
var result = combine([1, 2, 3, 4]);
console.log("Combinaciones = "+ JSON.stringify(result));
我期望作为解决方案的结果将是:
Combinaciones = [[1,2],[1,3],[1,4],[2,1],[2,3],[2,4],[3,1],[3,2],[3,4],[4,1],[4,2],[4,3]]
但是我得到了这个,我不知道错误在哪里:
Combinaciones = [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]];
因此,例如,如果它检查 1.2,我也希望它检查 2.1 但不是每个数字本身。
如何获得两种意义上的可能对的组合,只省略一个数字本身?
第二个循环中的变量 j 必须初始化为 0 ,否则当第一个循环在第一次迭代中时,它将取值 2。它看起来像这样: