1.数组并集的实现
var arr1 = [1, 2, 3, 4],
arr2 = [3, 4, 5, 6];
var newArr = arr1.concat(arr2.filter(val => {
return !(arr1.indexOf(val) > -1);
}));
console.log(newArr);
2.数组交集的实现
模仿上例:交集=arr1-arr2中包含arr1中元素的剩余元素
var newArr = arr2.filter(val => {
return arr1.indexOf(val) > -1;
});
3.数组补集的实现
var newArr = arr2.filter(val => {
return arr1.indexOf(val) == -1;
});
4.知识点
4.1.indexOf返回数组的索引
用法
语法:
arrayObject.indexOf(searchvalue, startIndex)
功能:
从数组的开头(位置0)开始向后查找。
参数:
searchvalue:必需,要查找的项;
startIndex:可选,起点位置的索引。
返回值:
number,查找的项在数组中的位置,没有找到的情况下返-1。
示例
console.log([1,33,555].indexOf(555));
4.2.concat连接数组
用法
语法:
array1.concat([item1[, item2[, . . . [, itemN]]]])
参数:
array1:必选项。其他所有数组要进行连接的 Array 对象。
item1,..., itemN:可选项。要连接到 array1 末尾的其他项目。
返回值:
返回一个 Array 对象,其中包含了 array1 和提供的任意其他项目的连接。
示例
console.log(['h','e'].concat(['l','l','o']));
4.3.filter过滤数组
用法
语法:
array.filter(function(currentValue,index,arr), thisValue)
参数:
function(currentValue,index,arr):必须,数组的每个元素都会执行这个函数
currentValue:必须,当前元素的值
index:可选,当前元素的索引值
arr:可选,当前元素属于的数组对象
thisValue:可选,对象作为该执行回调时使用,传递给函数,用作"this"的值(若省略,"this"的值为undefined)
返回值:
返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。
示例
var marks = [88, 98, 78, 56, 26, 51];
marks = marks.filter(val => {
return val >= 60;
});
console.log(marks);