1. forEach 数组遍历方法
- 语法:
数组.forEach(function(v, i, ar) {}, thisArg)
- 传入的第一个参数必须是一个函数:每个数组数据都会执行传入函数(循环执行)
- 传入函数执行次数为数组长度
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用forEach
方法的数组本身
- 传入的第二个参数(可传可不传)指的是将传入的第一个参数(函数)中的
this
指向更改为thisArg
- 作用:遍历数组数据
- 返回值:
undefined
(没有返回值)
var arr = ['a', 'b', 'c', 'd']
var r = arr.forEach(function(v, i, ar) {
console.log(this)
}, { a: 1 })
console.log(r)
2. map 数组映射方法
- 语法:
数组.map(function(v, i, ar) {})
- 传入的参数必须是一个函数:每个数组数据都会执行传入函数(循环执行)
- 传入函数执行次数为数组长度
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用map
方法的数组本身
- 作用:映射数组数据
- 返回值:一个新数组,新数组数据是每次传入函数执行的返回值
var arr = [10, 20, 30, 40]
var resArr = arr.map(function(v, i, ar) {
return v * 3
})
console.log(resArr)
3. filter 数组过滤方法
- 语法:
数组.filter(function(v, i, ar) {})
- 传入的参数必须是一个函数:每个数组数据都会执行传入函数(循环执行)
- 传入函数执行次数为数组长度
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用filter
方法的数组本身
- 作用:过滤数组数据
- 返回值:一个新数组
- 每次传入函数执行的返回值转布尔为
true
则执行传入函数的原数组数据作为新数组数据
var arr = [10, 20, 30, 40]
var resArr = arr.filter(function(v, i, ar) {
return v >= 30
})
console.log(resArr)
4. some 数组判断方法
- 语法:
数组.some(function(v, i, ar) {})
- 传入的参数必须是一个函数:逐个数组数据会执行传入函数
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用some
方法的数组本身
- 如果传入函数执行的返回值转布尔值为
true
,则传入函数不再继续执行
- 作用:判断数组数据(数组某一个数据满足条件即可)
- 返回值:布尔值
- 如果传入函数某一次执行的返回值为
true
,则some
的返回值为true
- 如果传入函数每次执行的返回值都为
false
,则some
的返回值为false
var arr = [10, 20, 30, 40]
var r = arr.some(function(v, i, ar) {
return v >= 40
})
console.log(r)
5. every 数组判断方法
- 语法:
数组.every(function(v, i, ar) {}, thisArg)
- 传入的第一个参数必须是一个函数:逐个数组数据会执行传入函数
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用every
方法的数组本身
- 如果传入函数执行的返回值转布尔值为
false
,则传入函数不再继续执行
- 传入的第二个参数(可传可不传)指的是将传入的第一个参数(函数)中的
this
指向更改为thisArg
- 作用:判断数组数据(数组每一个数据满足条件才行)
- 返回值:布尔值
- 如果传入函数某一次执行的返回值为
false
,则every
的返回值为false
- 如果传入函数每次执行的返回值都为
true
,则every
的返回值为true
var arr = [10, 20, 30, 40]
var r = arr.every(function(v, i, ar) {
console.log(this)
return v <= 40
}, { a: 1 })
console.log(r)
6. find 数组数据查找方法
- 语法:
数组.find(function(v, i, ar) {})
- 传入的参数必须是一个函数:逐个数组数据会执行传入函数
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用find
方法的数组本身
- 如果传入函数执行的返回值转布尔值为
true
,则传入函数不再继续执行
- 作用:查找数组数据(第一个满足条件的数组数据)
- 返回值:
- 如果传入函数某一次执行的返回值为
true
,则返回值为执行此次函数的数组数据v
- 如果传入函数每次执行的返回值都为
false
,则返回undefined
var arr = [
{ id: 1, user: 'zs', age: 17, score: 180 },
{ id: 2, user: 'ls', age: 18, score: 280 },
{ id: 3, user: 'ww', age: 19, score: 380 },
{ id: 4, user: 'zl', age: 20, score: 480 }
]
var r = arr.find(function(v, i, ar) {
return v.id == 2
})
console.log(r)
7. findLast 数组数据查找方法
- 语法、作用以及返回值都与
find
方法一样
- 不同的是
find
是从数组开头的数据开始从前往后依次执行传入的函数 - 但是
findLast
是从数组最后的数据开始从后往前依次执行传入的函数
8. findIndex 数组数据索引查找方法
- 语法:
数组.findIndex(function(v, i, ar) {})
- 传入的参数必须是一个函数:逐个数组数据会执行传入函数
- 每次函数执行中参数的含义
v
表示本次执行函数的数组数据i
表示本次执行函数的数组数据对应的索引ar
表示调用findIndex
方法的数组本身
- 如果传入函数执行的返回值转布尔值为
true
,则传入函数不再继续执行
- 作用:查找数组数据索引(第一个满足条件的数组数据)
- 返回值:
- 如果传入函数某一次执行的返回值为
true
,则返回值为执行此次函数的数组数据的索引i
- 如果传入函数每次执行的返回值都为
false
,则返回-1
var arr = [
{ id: 1, user: 'zs', age: 17, score: 180 },
{ id: 2, user: 'ls', age: 18, score: 280 },
{ id: 3, user: 'ww', age: 19, score: 380 },
{ id: 4, user: 'zl', age: 20, score: 480 }
]
var r = arr.findIndex(function(v, i, ar) {
return v.id == 2
})
console.log(r)
9. findLastIndex 数组数据索引查找方法
- 语法、作用以及返回值都与
findIndex
方法一样
- 不同的是
findIndex
是从数组开头的数据开始从前往后依次执行传入的函数 - 但是
findLastIndex
是从数组最后的数据开始从后往前依次执行传入的函数
10. reduce 数组累计方法
- 语法1:
数组.reduce(function(prev, item, index, ar) {})
- 传入的参数必须是一个函数:逐个数组数据会执行传入函数
- 传入函数执行数组长度-1次
- 第一次执行传入函数(参数含义)
prev
:表示本次执行函数的数组的第一个数据item
:表示本次执行函数的数组的第二个数据index
:表示item
参数对应的数组数据索引ar
:表示调用reduce
方法的数组本身
- 第二次执行传入函数(参数含义)
prev
:表示第一次传入函数执行的返回值item
:表示本次执行函数的数组的第三个数据index
:表示item
参数对应的数组数据索引ar
:表示调用reduce
方法的数组本身
- 后续每次执行传入函数(参数含义)
prev
:表示上一次传入函数执行的返回值item
:表示依次执行函数的数组数据index
:表示item
参数对应的数组数据索引ar
:表示调用reduce
方法的数组本身
- 返回值:就是传入函数最后一次执行的返回值
var arr = [10, 20, 30, 40]
var res = arr.reduce(function(prev, item, index, ar) {
console.log(prev, '--', item, '--', index)
return prev + item
})
console.log(res)
- 语法2:
数组.reduce(function(prev, item, index, ar) {}, init数据)
- 传入的第一个参数必须是一个函数:每个数组数据都会执行传入函数(循环执行)
- 第一次执行传入函数(参数含义)
prev
:表示reduce
方法传入的第二个参数init
数据的值item
:表示本次执行函数的数组的第一个数据index
:表示item
参数对应的数组数据索引ar
:表示调用reduce
方法的数组本身
- 第二次执行传入函数(参数含义)
prev
:表示第一次传入函数执行的返回值item
:表示本次执行函数的数组的第二个数据index
:表示item
参数对应的数组数据索引ar
:表示调用reduce
方法的数组本身
- 后续每次执行传入函数(参数含义)
prev
:表示上一次传入函数执行的返回值item
:表示依次执行函数的数组数据index
:表示item
参数对应的数组数据索引ar
:表示调用reduce
方法的数组本身
- 返回值:就是传入函数最后一次执行的返回值
var arr = [10, 20, 30, 40]
var res = arr.reduce(function(prev, item, index, ar) {
console.log(prev, '--', item, '--', index)
return prev + item
}, 50)
console.log(res)
var arr = [10, 20, 30, 40]
var resArr = arr.reduce(function(prev, item, index, ar) {
prev.push(item * 3)
return prev
}, [])
console.log(resArr)
var arr = [10, 20, 30, 40]
var resArr = arr.reduce(function(prev, item, index, ar) {
if(item >= 30) prev.push(item)
return prev
}, [])
console.log(resArr)
var arr = [10, 20, 30, 40]
var res = arr.reduce(function(prev, item, index, ar) {
if (!prev) {
if (item >= 40) prev = true
}
return prev
}, false)
console.log(res)
11. reduceRight 数组累计方法(反向)
- 语法、作用以及返回值都与
reduce
方法一样
- 不同的是
reduce
是从数组开头的数据开始从前往后依次执行传入的函数 - 但是
reduceRight
是从数组最后的数据开始从后往前依次执行传入的函数