1.js数组常见方法梳理
filter & map
filter筛选数据(数据一样)
var newArray = arr.filter(function callback(curValue, index , array){
//函数代码
});
filter不会改变原数组,返回一个新的数组
return 对true和false判断
返回return true的子项
不会修改原数组的子项
- 长度:小于等于
- 数据:子集
map返回数组对象(长度一样)
var newArray = arr.map(function callback(currentValue, index, array){
//对每个元素的处理
})
数组map返回的不一定是他的子项
- 数据:可以自定义
- 长度:与原数组保持一致
例1:
map不会对数组进行筛选,如果不返回数据,则默认返回undefined作为子项
reduce
接受一个函数作为累加器,依次加上数组的当前元素。
语法
arr.reduce(callback(previousValue, currentValue, currentIndex,array),initialValue);
参数
callback:累加器函数
previousValue: 上一次调用函数后的返回值,或者是提供的初始值(initialValue)
currentValue:当前数组的元素
currentIndex:当前数组元素的索引
array:调用reduce的数组
initialValue:初始值,作为第一次调用callback的第一个参数,也可不写,默认为0;
var a = [1,2,3,4];
var new = a.reduce(function(total, current){
return total + current;
},0);
console.log(new,a);
//10 //1 2 3 4
数组去重
function noRepeat(arr) {
return [...new Set(arr)]
}
- 1
- 2
- 3
function noRepeat(arr) {
return Array.from(new Set(arr))
}
数组最大、最小
最大
function arrayMax(arr) {
return Math.max(...arr);
}
- 1
- 2
- 3
最小
function arrayMin(arr) {
return Math.min(...arr);
}