在数组中查找重复项的JavaScript函数会打印两次结果.如何修复



我现在使用的JavaScript代码扫描数组并找到重复的代码。但是,如果数组中有两个以上相同的条目,它会将该条目打印两次。

请参阅代码段,其中数组arr有三次字符串"one",因此输出打印两次。

如何编辑我的JavaScript函数,使输出不会打印重复的两次?

var arr = ["one", "two", "one", "three", "one", "four", "two", "five", "six"];
var cache = {};
var results = [];
for (var i = 0, len = arr.length; i < len; i++) {
if(cache[arr[i]] === true){
results.push(arr[i]);
}else{
cache[arr[i]] = true;
}
}
console.log(results)

您可以存储出现次数,而不是boolean:

var arr = ["one", "two", "one", "three", "one", "four", "two", "five", "six"];
var cache = {};
var results = [];
for (var i = 0, len = arr.length; i < len; i++) {
if(cache[arr[i]] === 1){
results.push(arr[i]);
cache[arr[i]] += 1;
}else{
cache[arr[i]] = 1;
}
}
console.log(results)

使用另一个缓存

var arr = ["one", "two", "one", "three", "one", "four", "two", "five", "six"];
var cache = {};
var cache2 = {};
var results = [];
for (var i = 0, len = arr.length; i < len; i++) {
if (cache[arr[i]] === true) {
cache2[arr[i]] = true
} else {
cache[arr[i]] = true;
}
}
console.log(Object.keys(cache2))

最新更新