如何求两个数组的相同元素;
方法如下:
var subSet = function(arr1, arr2) {
var arr = [];
for(var i=0;i<arr1.length;i++){
if(arr2.indexOf(arr1[i]) != '-1'){
arr.push(arr1[i]);
}
}
return arr;
};
var a = [1,2],b=[1,2,3];
subSet(b,a)
结果:
[1, 2]
如果数组元素是对象,提供一下优化方法供选择;
var subSetById = function(arr1, arr2) {
var arr = [];
var listId = [];
for(var i=0;i<arr2.length;i++){
listId.push(arr2[i].id);
}
for(var j=0;j<arr1.length;j++){
if(listId.indexOf(arr1[j].id) != '-1'){
arr.push(arr1[j]);
}
}
return arr;
};
var a = [{id:1,v:1},{id:2,v:2}],b=[{id:1,v:1},{id:2,v:2},{id:3,v:3}];
subSetById(b,a)
结果: