数组方法
注:都不会对空数组进行操作,使用前要判空。
1.map
- 映射 ,对数组元素一个一个进行处理,返回一个新数组
- 不会改变原始数组
- 回调函数参数:
- currentValue,index,arr
- 当前元素的值(必),当前元素的索引值,当前元素属于的数组对象
let arr = [12, 5, 8]
let result = arr.map(function (item) {
return item*2
})
console.log(result)//[24, 10, 16]
let result2 = arr.map(item=>item*2) // 简写
console.log(result2)//[24, 10, 16]
2.redece
- 累加,最终计算为一个值。
- 回调元素参数:
- total,currentValue,index,arr
- 初始值(或者计算结束后的返回值,必),当前元素的值(必),当前元素的索引值,当前元素属于的数组对象
var arr = [1, 3, 5, 7]
var result = arr.reduce(function (tmp, item, index) {
//tmp 上次结果,item当前数,index次数1开始
console.log(tmp, item, index)
//1 3 1
//4 5 2
//9 7 3
return tmp + item
})
console.log(result) //16
// 求平均值
var arr = [1, 3, 5, 7]
var result = arr.reduce(function (tmp, item, index) {
if (index != arr.length - 1) { // 不是最后一次
return tmp + item
} else {
return (tmp + item)/arr.length
}
})
console.log(result) //4
3.filter
- 过滤器,保留为true的,返回一个新数组
- 不会改变原始数组
- 回调函数参数:
- currentValue,index,arr
- 当前元素的值(必),当前元素的索引值,当前元素属于的数组对象
let arr = [12, 4, 8, 9]
let result = arr.filter(function (item) {
return item % 3 === 0
})
console.log(result)//[12,9]
let result = arr.filter(item => item % 3 === 0)//简写
console.log(result)//[12,9]
4.every
- 检测数组所有元素是否都符合指定条件,返回布尔值。
- 都满足条件为true,有一个不满足为false----> 一假即假
- 回调函数参数:
- currentValue,index,arr
- 当前元素的值(必),当前元素的索引值,当前元素属于的数组对象
let arr = [12, 4, 8, 9]
let result = arr.every(item => item % 3 === 0)//简写
console.log(result)//false
5.some
- 检测数组所有元素是否都符合指定条件,返回布尔值。
- 只要有一个满足条件就为true------> 一真即真
- 回调函数参数:
- currentValue,index,arr
- 当前元素的值(必),当前元素的索引值,当前元素属于的数组对象
let arr = [12, 4, 8, 9]
let result = arr.some(item => item % 3 === 0)//简写
console.log(result)//true
6.forEach
- 循环,对元素进行一些操作
- 回调函数参数:
- currentValue,index,arr
- 当前元素的值(必),当前元素的索引值,当前元素属于的数组对象
let arr = [12, 4, 8, 9]
let result = arr.forEach(item => console.log(item))
//12
//4
//8
//9