在Javascript中,我正在测试两个数组来检查重复项。我在ES6中找到了一个很好的简单方法
function hasDuplicates(MyArray) {
return new Set(MyArray).size !== MyArray.length;
}
但是,我希望它忽略数组中的空值,因为它将空值计为重复值。
我的数组如下所示:[“name 0”,“name”,“name 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"]