gpt4 book ai didi

javascript - 在数组中查找唯一对

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:31 25 4
gpt4 key购买 nike

给定这个输入 [3,1,2] 我想要这个输出 [ [ 1, 1 ], [ 1, 2 ], [ 1, 3 ], [ 2 , 2 ], [ 2, 3 ], [ 3, 3 ] ]

它是独特的对 ([1,2] == [2,1])

目前我已经做到了

const arr = [3,1,2];
const pairBuilder = (left, index, collection) =>
collection.slice(index).map(right => [left, right]);

const pairs = arr.sort().flatMap(pairBuilder);
console.log(pairs)

这段代码是有效的,但我想知道是否有更好的方法(在性能方面)来实现这一点?我虽然使用 lodash改进排序/映射(使用 chain),但我的问题更多是关于算法改进。

最佳答案

你可以使用 Generatorfunction*并对数组进行切片以仅获取唯一对。

function* getPairs(array, left) {
var i = 0;
while (i < array.length) {
if (left) yield [left, array[i]];
else yield* getPairs(array.slice(i), array[i]);
i++;
}
}

var array = [1, 2, 3];

console.log([...getPairs(array)]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

经典方法。

function getPairs(array) {
var i, j, result = [];
for (i = 0; i < array.length; i++) {
for (j = i; j < array.length; j++) {
result.push([array[i], array[j]]);
}
}
return result;
}

var array = [1, 2, 3];

console.log(getPairs(array));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在数组中查找唯一对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55492102/

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