Javascript迭代方法
js中数组各种迭代方法等,总是容易记混,特地来记录下,以便以后查阅
Array.forEach()
对数组中的每一项运行给定函数,无返回值。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身);Array.map()
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身);Array.filter()
对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身)Array.some()
对数组中的每一项运行给定函数,如果该函数任一项返回true,则返回true。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身)Array.every()
对数组中的每一项运行给定函数,如果该函数每一项返回true,则返回true,否则为false。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身)Array.reduce()
,Array.reduceRight()
会迭代数组的所有项,然后构建一个最终返回的值。reduceRight()从右向左遍历。该函数接收4个参数: 初始值(或计算结束后的返回值)、当前元素、当前元素的索引、数组本身。Array.indexOf(item, start)
在数组中搜索元素值并返回其索引,从0开始。若未找到,返回-1。 参数item必须,start可选,从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。Array.lastIndexOf()
同上,从数组结尾开始搜索Array.find()
该方法返回符合函数的第一个数组元素的值。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身),ie12浏览器支持Array.findIndex()
该方法返回符合函数的第一个数组元素的索引。该函数接收三个参数(数组项的值、该项在数组中位置、数组本身)for...of
该方法遍历一切可遍历的元素(数组、对象、集合)等
实例
forEach()
var numbers = [1,2,3,4,5,4,3,2,1]
numbers.forEach((item, index, arr) => {
console.log(item) //无返回值,循环数组的值
})
map()
// 返回每次函数调用的结果组成的数组
var numbers = [1,2,3,4,5,4,3,2,1]
var mapResult = numbers.map((item, index, arr) => {
return item > 2
})
console.log(mapResult) // [2,4,6,8,10,8,6,4,2]
filter()
// 返回该函数会返回true的项组成的数组
var numbers = [1,2,3,4,5,4,3,2,1]
var filterResult = numbers.filter((item, index, arr) => {
return item > 3
})
console.log(filterResult) // [4,5,4]
some()
// 如果该函数任一项返回true,则返回true
var numbers = [1,2,3,4,5,4,3,2,1]
var someResult = numbers.some((item, index, arr) => {
return item > 3
})
console.log(someResult) // true
every()
// 如果该函数任一项返回false,则返回false
var numbers = [1,2,3,4,5,4,3,2,1]
var everyResult = numbers.every((item, index, arr) => {
return item > 3
})
console.log(everyResult) // false
reduce()
// 返回计算结果。注意:reduce() 对于空数组不执行回调函数
var numbers = [1,2,3,4,5,4,3,2,1]
var sum = numbers.reduce((total, currentVal, currentIndex, arr) => {
return total + currentVal
})
console.log(sum) // 25
indexOf()
// 返回数组中指定元素第一次出现的位置,如果没有匹配的元素返回-1,开始的索引为0
var numbers = [1,2,3,4,5,4,3,2,1]
console.log(numbers.indexOf(3)) // 2
lastIndexOf()
// 从结尾开始搜索,如果没有匹配的元素返回-1
var numbers = [1,2,3,4,5,4,3,2,1]
console.log(numbers.lastIndexOf(3)) // 6
find()
// 返回匹配的第一个元素的值,无匹配的值则为undefined
var numbers = [1,9,12,16,19]
var findResult= numbers.find((item, index, arr) => {
return item > 10
})
console.log(findResult) // 12
findIndex()
// 返回匹配的第一个元素的索引值,无匹配的值则为undefined
var numbers = [1,9,12,16,19]
var findResult= numbers.findIndex((item, index, arr) => {
return item > 10
})
console.log(findResult) // 2
for…of
// 返回匹配的第一个元素的索引值,无匹配的值则为undefined
var numbers = [1,9,12,16,19]
for (let item of numbers) {
console.log(item) //打印出每一项的值
}
for (let item of numbers.values()) {
console.log(item) //打印出每一项的值
}
for (let item of numbers.keys()) {
console.log(item) //打印出每一项的索引值
}
for (let [index, item] of numbers.entries()) {
console.log(index, item) //打印出每一项的索引值与值
}