gpt4 book ai didi

javascript - 在数组中查找重复对

转载 作者:行者123 更新时间:2023-12-01 15:55:27 25 4
gpt4 key购买 nike

我有一个数组a = [1,1,1,2,2,3,3,3,4,4,4,6,6,6,7,7]我想获取此数组列表中的所有重复对。由于有 2 和 7 对,输出应该是 -

Output: [2, 7]

我尝试编写自己的逻辑,但我在这方面非常薄弱。有人可以帮忙吗?

function getDuplicateArrayElements(arr){
let sorted_arr = arr.slice().sort();
let results = [];

for (let i = 0; i < sorted_arr.length; i++) {
let matchingElementCount = 1;

for (let j = i + 1; j < sorted_arr.length - i; j++) {
if (sorted_arr[j] === sorted_arr[i]) {
++matchingElementCount;
} else {

if(matchingElementCount % 2 === 0) {
results.push(sorted_arr[i]);
}
i = j - 1;
break;

}
}
}
return results; } var a = [1,1,1,2,2,3,3,3,4,6,6,6,7,7]; var duplicateValues= getDuplicateArrayElements(a);

最佳答案

您可以使用 reduceforEach 实现您的结果。

const arr = [1,1,1,1,2,2,3,3,3,4,4,4,6,6,6,7,7];

// Generate a hashmap from the given array for counting the frequency.
const hashMap = arr.reduce((a, c) => {
a[c] = (a[c] || 0) + 1;
return a;
}, {});


const pair = [];

// If the frequency is divided by 2 then push the key of the hashMap into pair array.
Object.entries(hashMap).forEach(([k, v]) => {
if (v % 2 === 0) {
[...Array(Math.floor(v / 2))].forEach(_ => pair.push(k));
}
})

console.log(pair);

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

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