数组交集
1. 利用filter + indexOf
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9], arr2 = [1, 3, 5];
var intersection = arr1.filter(function (val) {return arr2.indexOf(val) > -1;
})
console.log(intersection); // [1, 3, 5]
但这种方法针对是value值比较简单的Number(不包括NaN)、String、Boolean类型, 因为indexOf 本质上还是使用 === 来判断。
2. 利用Set
function intersect (a, b) {var bSet = new Set(b);return Array.from(a.filter(function (val) {return bSet.has(val);}));
}
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, NaN], arr2 = [1, 3, 5, NaN];
var intersection = intersect (arr1, arr2);
console.log(intersection); // [1, 3, 5, NaN]
可以解决NaN