ES5数组的高阶方法
forEach 遍历
var arr = ["good", "luck", "hello", "world"];
//=============forEach方法
var a = arr.forEach(function(item, index, self) {
console.log(item); //数组的每一个值
console.log(index); //下标值
console.log(self); // 数组本身
})
map映射
var arr = ["good", "luck", "hello", "world"];
//=============map方法
var a = arr.map(function(item, index, self) {
console.log(item); //数组的每一个值
console.log(index); //下标值
console.log(self); // 数组本身
})
// map 和forEach的区别:map有返回值,forEach无返回值;
filter 过滤
array.filter(function(item,index,self){
})
filter方法创建一个新的数组 ,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组
注意它直接返回一个新数组
item: 数组当前项的值
index :数组当前项的索引
self :数组对象本身
reduce 累计
var arr = [1, 8, 9, 45];
var sum = arr.reduce(function(a, b) {
return a + b;
})
console.log(sum); //63
//a,b两个参数 上一次计算结果是这一次的a
every 每个
var arr = [1, 8, 9, 45];
var num = arr.every(function(item) {
return item >5
})
console.log(num);
//全部满足才返回true
some 有一个
var arr = [1, 8, 9, 45];
var num2 = arr.some(function(item) {
return item > 5
})
console.log(num2);
●some 方法用于检测数组中的元素是否满足指定条件.通俗点就是查找数组中是否有满足条件的元素
●注意它返回值是布尔值如果查找到这个元素,就返回true,如果查找不到就返回false.
●如果找到第一个满足条件的元素,则终止循环不在继续查找.
sort排序
var arr = [12, 85, 98, 56];
arr.sort(function(a, b) {
return a - b;
})
console.log(arr); //[12,56,85,98]
//sort()
无参数
按照首个字符的Unicode编码值进行排序
有参数
按照参数指定的顺序进行排序
var arr1 = [{age: 48}, {age: 12}, {age: 89}];
arr1.sort(function(a, b) {
return a.age - b.age
})
console.log(arr1);// [{age: 12}, {age: 48}, {age: 89}]
案例
求两个数组的交集,差集,并集
var arr1 = [1, 2, 3];
var arr2 = [2, 3, 4];
// // 交集
// var arr = arr1.filter(function(item) {
// if (arr2.indexOf(item) != -1) {
// return true
// } else {
// return false
// }
// });
// // 差集
var arr = arr1.concat(arr2).filter(function(item) {
return arr1.indexOf(item) == -1 || arr2.indexOf(item) == -1
})
console.log(arr);
// var arr5 = [...arr3, ...arr4]
// console.log(arr5);
// // 并集
// var arr6 = [...new Set([...arr1, ...arr2])]
// console.log(arr6);