JS取出两个数组中的不同或相同元素(简易方法)
【代码】JS取出两个数组中的不同或相同元素(简易方法)
·
JS取出两个数组中的不同或相同元素(简易方法)
一、使用 concat 和 filter 取出不同的元素(取出两个数组的不同元素==>既在arr1又在arr2)
var arr1 = [0,1,2,3,4,5];
var arr2 = [0,4,6,1,3,9];
function getArrDifference(arr1, arr2) {
return arr1.concat(arr2).filter(function(v, i, arr) {
return arr.indexOf(v) === arr.lastIndexOf(v);
});
}
console.log(getArrDifference(arr1,arr2));
//输出:(4) [2, 5, 6, 9]
concat 用来合并两个数组,也可以写成[...arr1, ...arr2];
filter用来过滤数组,参数arr表示合并后的数组;
indexOf表示元素第一次出现的位置,lastIndexOf表示元素最后一次出现的位置。
二、使用 some和 filter 取出相同的元素
var arr1 = [0,1,2,3,4,5];
var arr2 = [0,4,6,1,3,9];
function getArrDifference(arr1, arr2) {
return arr1.filter(item =>{
return arr2.some(i=>item==i)
// return arr2.some(i=>item.id==i.id) // 数组是对象时
});
}
console.log(getArrDifference(arr1,arr2));
//输出:(4) [0, 1, 3, 4]
三、获取两个数组的相同元素(Set、filter、includes)
function getSame(arr1, arr2) {
return [...new Set(arr1)].filter(item =>
arr2.includes(item) // [2, 3, 4, 5];
//!arr2.includes(item) // [1]; 取a1不在a2里面的元素
)
}
// eg:
var a1 = [1, 2, 3, 3, 4, 5],
a2 = [2, 3, 4, 5, 6];
getSame(a1, a2); // [2, 3, 4, 5]
四、取a1不在a2里面的元素
function getSame(arr1, arr2) {
return [...new Set(arr1)].filter(item =>
!arr2.includes(item)
)
}
// eg:
var a1 = [1, 2, 3, 3, 4, 5],
a2 = [2, 3, 4, 5, 6];
getSame(a1, a2); //[1]
更多推荐
已为社区贡献1条内容
所有评论(0)