问题描述
我现在正在使用的JavaScript代码扫描一个数组并查找重复项。但是,如果数组中有两个以上相同的条目,它将打印该条目两次。
请参见代码段,其中数组arr
具有字符串"one"
三次,以便输出两次。
如何编辑JavaScript函数,以使输出不会重复打印两次?
var arr = ["one","two","one","three","four","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","four","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","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))