类似于for循环,是对指定数组进行遍历,不会改变原素组里的元素
语法:forEach(callbackFn)
返回值:undefined
const arr = [1,2,3,4,5]
let b = []
// 将数组arr的元素拷贝到数组b
const a = arr.forEach(element => {
b.push(element)
// 就算return了,forEach方法的执行结果还是undefine
// 就算对元素进行操作了,也不会改变原数组
return element + 5
})
console.log(b) // 返回值:[1,2,3,4,5]
console.log(arr) // 返回值:[1,2,3,4,5]
console.log(a) // 返回值:undefined
遍历每一个元素,对原数组中的元素进行指定操作,返回一个新数组,新数组的元素是每次回调函数的返回值
语法:map(callbackFn)
返回值:一个新数组
const arr = [1,2,3,4,5]
// 将arr中的每一个元素加5,最后作为新数组返回
const newArr = arr.map(element => {
return element + 5
})
console.log(newArr)
遍历每一个元素,将原数组中符合条件的元素过滤出来,形成一个新数组,此方法不会改变原数组
语法:filter(callbackFn)
返回值:一个新数组
const arr = [1,2,3,4,5]
// 过滤出arr中大于等于3的元素
const newArr = arr.filter(element=>{
return element >= 3
})
console.log(newArr) // 输出值:[3,4,5]
遍历数组的每一个元素,并将数组元素进行累积,最终返回累计后的结果,此方法不会改变原数组
语法:reduce( callbackFn [,initValue] ),方括号内的参数为可选参数
返回值:累积后的值
回调函数callbackFn中接收的参数:
initValue:accumulator的初始值,未指定initValue时,若操作的数组为空则会抛出异常
const arr = [1,2,3,4,5]
// 将arr中的元素进行累加,回调函数执行4次
// 此时未指定initialValue,accumulator的初始值为arr[0],currentValue的值为arr[1]
const result = arr.reduce( (accumulator,currentValue) => {
return accumulator + currentValue
})
console.log(result) // 返回值:15
const arr = [1,2,3,4,5]
// 将arr中的元素进行累加,回调函数执行五次
// 此时指定initValue的值为0,则accumulator的初始值为0,currentValue的值为arr[0]
const result = arr.reduce( (accumulator,currentValue) => {
console.log(111)
return accumulator + currentValue
},0)
console.log(result) // 返回值:15
遍历数组,将数组的元素按要求排序,会改变原数组,默认排序是将元素转换为字符串,然后按照它们的 UTF-16 码元值升序排序。
语法:sort(compareFn)
返回值:排序好的数组
compareFn的返回值 a-b 表示升序,b-a表示降序
const arr = [1,10000,34,67,43]
// 不指定排序条件,默认排序
arr.sort()
console.log(arr) // 返回值:[1,10000,34,43,67]
const arr = [25,56,22,15,756]
// 将数组升序排序
arr.sort((a,b) => {
return a - b
})
console.log(arr) //返回值:[15, 22, 25, 56, 756]
const arr = [25,56,22,15,756]
// 将数组降序排序
arr.sort((a,b) => {
return b - a
})
console.log(arr) //返回值:[756, 56, 25, 22, 15]
遍历一遍数组,如果数组中有一个元素满足条件,则结果返回true,一个都不满足则返回false,此方法不会改变原数组
语法:some(callbackFn)
返回值:布尔值
const arr = [1,3,5,6,7]
//检测数组中是否有能被3整除的元素
const result = arr.some( element => {
return element % 3 === 0
})
console.log(result) // 返回值:true
遍历数组,如果数组中所有元素都满足条件,则结果返回true,有一个不满足则停止遍历,返回false,此方法不会改变原数组
语法:every(callbackFn)
返回值:布尔值
const arr = [4,8,10,12,16]
//检测数组中的元素是否都可以被4整除,执行3次
const result1 = arr.every( element => {
return element % 4 === 0
})
console.log(result1) // 返回值:false
//检测数组中的元素是否都可以被2整除,执行5次
const result2 = arr.every( element => {
return element % 2 === 0
})
console.log(result2) // 返回值:true
遍历数组,找到第一个符合要求的元素就停止遍历,找不到则返回undefined,该方法不会该改变原数组
语法:find(callbackFn)
返回值:数组元素
const arr = [12,34,56,18,78]
// 找出数组中第一个大于20的元素,执行2次
const result = arr.find( element => {
return element > 20
})
console.log(result) // 返回值:34
遍历数组,找到第一个符合要求的元素就停止遍历,找不到则返回-1,该方法不会该改变原数组
语法:findIndex(callbackFn)
返回值:对应元素的索引
const arr = [12,34,56,18,78]
// 找出数组中第一个大于20的元素的索引,执行2次
const result = arr.findIndex( element => {
return element > 20
})
console.log(result) // 返回值:1