代码之家  ›  专栏  ›  技术社区  ›  SmartestVEGA

逗号分隔数组的重复检查

  •  0
  • SmartestVEGA  · 技术社区  · 6 年前

    我正在尝试检查以下数组中的重复项,只是希望在重复项存在时返回true或false。

    var array = ["Saturday", "Sunday", "Monday", "Tuesday", "Saturday" ];
    
    for ( var i = 0; i < array.length; i++){
    
    for (var j = i+1; j< array.length; j++){
    
    if (array [i] === array [j]){
    
    console.log(array[i]);
    }
    }
    
    }
    

    我尝试过上面的方法,它只给出数组中一个项目的结果,而不是逗号分隔的结果。对于逗号分隔的数组,如何以最佳方式编写重复的检查函数?

    Array(10)
     0: "test3,tier 1,test,test2
    "1: "test3,tier 1,test,test2
    "2: "test3,tier 1,test,test2
    "3: "test3,tier 1,test,test2
    "4: "test3,tier 1,test,test2
    "5: "test3,tier 1,test,test2
    "6: "test3,tier 1,test,test2
    "7: "test3,tier 1,test,test2
    "8: "test3,tier 1,test,test2
    "9: "test3,tier 1,test,test2
    "length: 10
    __proto__: Array(0)
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Hossam Houssien    6 年前

    A中的项目 Set 将永远 独特的 ,因为它只保留您输入的每个值的一个副本。下面是一个使用此属性的函数:

    function hasDuplicates(iterable) {
      return  new Set(array).size !== iterable.length;
    }
    
    // Demo
    var array = ["Saturday", "Sunday", "Monday", "Tuesday", "Saturday" ];
    console.log(hasDuplicates(array))
    
    // Returns True if there is duplicates
    // Otherwise return false

    Set(iterable).size 将返回该集中唯一元素的计数,而 iterable.length 是原始数组中所有元素的计数。

    编辑第1页

    要只检查第一个项目是否有重复项,可以使用类似的方法

    var array = ["Saturday",  "Saturday", "Sunday", "Monday", "Tuesday" ];
    
    
    console.log(array.indexOf(array[0] , 1) === -1 ? "No duplicates" : "Has duplicate" );
        2
  •  0
  •   SmartestVEGA    6 年前
    // Check duplicates in upload data excel
    
        checkDuplicates(arr) {
    
            if (arr.length > 1) {
                for (var i = 0; i < arr.length; i++) {
                    for (var j = i + 1; j < arr.length; j++) {
    
                        if (arr[i].split(',')[0] === arr[j].split(',')[0]) {
                            return true;
                        } else {
                            return false;
                        }
                    }
                }
            } else {
                return false;
            }
        }