数组的遍历方法
以...为例
let arr = [1,2,3,4]
let Arr = [
{id: 0, name: '小明' },
{id: 1, name: '小白' },
{id: 2, name: '小红' },
{id: 3, name: '小新' }
]
for
for (let i = 0; i < 6; i++) {
}
for in
遍历数组索引
for (i in arr) {
console.log(i);
}
// 0、1、2、3
for of
遍历数组元素值
for (v in arr) {
console.log(i);
}
// 1、2、3、4
forEach
遍历数组中的每一项,没有返回值,对原数组没有影响
arr.forEach((value,index,arr) => {
});
value 必需,当前元素
index 可选,当前元素的索引值
arr 可选,当前元素所属的数组对象
indexOf
返回某个指定的值在数组中首次出现的位置
arr.indexOf(value,fromindex)
value 必需,规定需检索的字符串值。
fromindex 可选的整数参数,规定在字符串中开始检索的位置
lastIndexOf
返回某个指定的值在数组中最后出现的位置,用法同 indexOf
find
返回一个符合条件的数组第一个元素值
常用语法: arr.find(value,index,arr) => {})
let a = Arr.findIndex(v => v.id === 2)
console.log(a); //{ id: 2, name: '小红', age: 3 }
findIndex
返回一个符合条件的数组第一个元素位置
常用语法: arr.findIndex(value,index,arr) => {})
let a = Arr.findIndex(v => v.id === 2) console.log(a); //2
includes
判断数组是否包含指定的元素值
arr.includes(value, fromIndex)
value 必须,需要查找的元素值。
fromIndex 可选,从该索引处开始查找
every
检测数组所有元素是否都符合指定条件,如果数组中检测到有一个元素不满足,则整个表达式返回 false
常用语法: arr.every(value,index,arr) => {})
let a = Arr.findIndex(v => v.id > 2)
console.log(a); //false
some
检测数组所有元素是否都符合指定条件,如果有一个元素满足条件,则表达式返回true
常用语法: arr.some((value,index,arr) => {})
let a = Arr.findIndex(v => v.id > 2)
console.log(a); //true
map
返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值,不影响原数组
常用语法: arr.map(value,index,arr) => {})
let a = Arr.map( (v,i) => {
return v.id * i
})
console.log(a); //[ 0, 1, 4, 9 ]
filter
返回一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,不影响原数组
常用语法: arr.filter(value,index,arr) => {})
let a = Arr.filter((v,i) => {
return v.id > 1
})
console.log(a); //[ { id: 2, name: '小红', age: 3 } ]
reduce
接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
常用语法: arr.reduce((total, value, index, arr) => {})
total: 必需,初始值, 或者计算结束后的返回值
let a = arr.reduce((total,v) => {
return total + v
})
console.log(a); //10
reduceRight
和 reduce 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做累加
keys、values、entries
返回一个数组的迭代对象,可以用 for of 进行遍历
keys遍历原数组键,values遍历原数组值,entries遍历原数组键值对