数组的常用方法
2020-08-05 本文已影响0人
凉城十月
数组是用Array创建出来的并且__proto__
指向Array.prototype的一种对象。
1.forEach
使用方法:
arr.forEach(function(value, key){})
实现:当直接传一个数组时。
function forEach(array ,x ){
for(let i =0 ;i<arrray.length ; i++){
x(array[i], i)
}
}
当用this传数组时。
arr.forEach = function(x){
for(let i = 0;i < arr.length; i++){
x(this[i], i)
}
}
this=arr,默认this会传到方法中,不用写出来。
2.sort
在原数组上进行排序,采用原地排序,更节省空间,内置的排序一般快排。
var a = [2,3,1,5,4]
a.sort(function(x,y){
return x- y //如果排序的顺序不对,就返回y-x
})
x表示左边那个数,y表示右边那个数。只有三种返回值: 正数,0,负数
3.join
默认用英文逗号分隔
var a = [1,2,3]
a.join('aa') //"1aa2aa3"
4.concat
合并多个数组,返回一个新的数组。 一般用来复制一个数组
var a =[1,2,3]
var b = a.concat([]) //返回一个新的数组
a === b //false
5.map
和forEach的效果一样,只不过有返回值。
a.map(function(value ,key ){
return value * 2
})
使用箭头函数表示:
a.map(value => value*2)
返回一个新的数组,a还是不变。
6.filter
返回一个新的数组,原数组不变。
filter和map一起用=>链式操作
a.filter(function(value ,key){
return value % 2 ===0 //只剩偶数
}).map(function(value ,key){
return value *value //取剩下的偶数的平方
})
7.reduce
reduce表示遍历数组,reduce是最强大的方法。
a= [1,2,3,4,5,6]
求和:
a.reduce(function(sum, n ){ //两个变量,n表示操作值,这个值一直在变,sum表示要输出的数据
return sum + n
}, 0) //方法后的值是sum的初始值
- map可以用reduce表示:
a.reduce(function(arr, n ){
arr.push( n * 2)
return arr
}, [])
- filter可以用reduce表示:
a.reduce(function(arr, n ){
if(n % 2 === 0){
arr.push(n)
}
return arr
}, [])