【问题标题】:JavaScript function that finds duplicates in an Array prints results twice. How to fix?在 Array 中查找重复项的 JavaScript 函数会打印两次结果。怎么修?
【发布时间】:2020-12-02 17:31:09
【问题描述】:

我现在使用的 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)

【问题讨论】:

    标签: javascript arrays duplicates


    【解决方案1】:

    您可以存储出现次数而不是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)

    【讨论】:

      【解决方案2】:

      使用另一个缓存

      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))

      【讨论】:

        猜你喜欢
        • 2021-07-12
        • 2015-07-04
        • 2016-11-22
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        相关资源
        最近更新 更多