检查重复项时如何忽略数组中的空值 - Javascript

时间:2018-02-19 08:49:03

标签: javascript arrays duplicates compare

在Javascript中,我正在测试两个数组来检查重复项。我在ES6中找到了一个很好的简单方法

function hasDuplicates(MyArray) {
    return new Set(MyArray).size !== MyArray.length;
      }

但是,我希望它忽略数组中的空值,因为它将空值计为重复值。

我的数组如下所示:[“name 0”,“name”,“name 2”,“”,“”]

我该怎么做?

2 个答案:

答案 0 :(得分:2)

只需在return声明

之前添加此行
var tmpArray = MyArray.filter( s => (s || !isNaN(s)) && String(s).length > 0 );

在return语句中使用此数组

return new Set( tmpArray ).size !== tmpArray.length;

或者只是扩展同一行以检查重复项

return MyArray.filter( ( s, i, arr ) => 
         (s || !isNaN(s)) && String(s).length > 0 
           && arr.indexOf( s, i + 1 ) != -1 ).length > 0; 

如果有重复项,则会返回true

答案 1 :(得分:0)

如果您想要返回dupe数组,这是我解决问题的方法:

let data = ["101", "", "", "666"];
let compData = ["", "", "666", "101"];
var result = data.filter((value) => {
    if(value !="" && compData.indexOf(value) > -1)
        return value;
})   

输出:

["101", "666"]