JS中数组遍历常用的一些方法

JS的数据类型里面都有一些内置API,我们可以通过后台调试工具打印出这些数据类型内置的一些方法。而且在这些API里面,个人觉得数组的一些方法是比较常用的,而且数组的方法还是挺多的,对于处理后台传递的数据处理,也常常会用到数组的一些方法。因为比较健忘,所以打算做个记录吧。

数组遍历

forEach

forEach方法用于调用数组的每个元素,并将元素传递给回调函数。该方法不会改变原来的数组;但是可以通过数组的索引来修改原来的数组;

`array.forEach(function(currentValue, index, arr), thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

map

map方法和forEach方法是一样的。map可以返回一个改变后的数组,而forEach不行,forEach没有返回值。

`array.map(function(currentValue,index,arr), thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[1,2,3,4,5]
let w=a.map(num=>{
     return num+=2;
    });
let n=a.forEach(num=>{
     return num+=3;
    });
console.log(w)   //[3,4,5,6,7]
console.log(n)   //undefine
console.log(a)   //[1,2,3,4,5]

filter

filter的意思就是过滤,用来过滤数组的,取出我们想要的值。filter会新建一个数组,然后把数组里面的每一项传给callback执行方法。filter不会改变原数组,而是返回一个数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

`array.filter(function(currentValue,index,arr), thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[21,35,45,12,27,60]

let arr=a.filter(function(item){
    return item>25
})
console.log(arr)  //[35,45,27,60]

some

some()方法用于检测数组中是否有满足指定条件的元素。如果有一个元素满足条件就不会继续执行检测,返回true,如果没有则返回false。some不可以检测空数组,不会改变原数组。

`array.some(function(currentValue,index,arr),thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[21,35,45,12,27,60]

let arr=a.some(function(item){
     return item>25
})
console.log(arr)  //true

every

字面意思就是每一个,该方法也是遍历数组中的没一项,如果所有元素满足条件就会返回true,如果有一项不符合条件,就会返回false。

array.every(function(currentValue,index,arr), thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[21,35,45,12,27,60]

let arr=a.every(function(item){
     return item>25
})
console.log(arr)  //false

find

字面理解为寻找,和filter相似,但是filter是过滤,然后返回符合条件的元素,而find也是寻找是否有符合条件的元素,如果有那么返回第一个符合条件的元素,之后就不会在执行检测了。如果遍历完还是没有找到符合条件的元素,则返回undefined。

array.find(function(currentValue, index, arr),thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[21,35,45,12,27,60]

let arr=a.every(function(item){
     return item>25
})
console.log(arr)  //35

findIndex

findIndex和方法一样,都是需要符合条件的元素,如果有,findIndex返回的是第一个元素位置的索引。而find返回的是第一个元素。有时候我们需要元素的索引,就可以选择findIndex。

array.findIndex(function(currentValue, index, arr), thisValue)

*currentValue 必须,表示当前元素

*index 可选,当前元素在数组中的索引值

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[21,35,45,12,27,60]

let arr=a.every(function(item){
     return item>25
})
console.log(arr)  //1

reduce

ruduce()方法接受一个方法作为累加器,数组中的每个值,从左到右,逐一计算,最后计算为一个值。比如累加

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

*total 必须,作为初始值,或者计算后返回的值,也就是上一次就算后返回的值

*currentValue 必须,表示当前元素

*arr 可选,当前元素所属的数组对象

*thisValue 可选,传递给函数的值一般用 "this" 值。如果为空或者是undefined或null,默认指向全局对象

let a=[21,35,45,12,27,60]

let arr=a.reduce(function(item,current){
     return item+current
})
console.log(arr)  //200

陈健的个人博客,记录生活所见所感、学习笔记。专注于Web前端_SEO教程_读书心得。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫