资讯专栏INFORMATION COLUMN

javaScript数组遍历方法总结

shiguibiao / 537人阅读

摘要:首次调用回调函数时,和可以是两个值之一。否则返回张三男王小毛男李四男李四返回结果为李四男方法李四对于数组中的每个元素,方法都会调用一次回调函数采用升序索引顺序,直到有元素返回。

数组遍历方法 1.for循环

使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显。

for(var j = 0,j < arr.length;j++) {
   //执行代码
}
2.foreach循环

遍历数组中的每一项,没有返回值,对原数组没有影响,不支持IE

arr.forEach((item,index,array)=>{
    //执行代码
})
//参数:value数组中的当前项, index当前项的索引, array原始数组;
//数组中有几项,那么传递进去的匿名回调函数就需要执行几次;
3.map循环

有返回值,可以return出来map的回调函数中支持return返回值;return的是啥,相当于把数组中的这一项变为啥(并不影响原来的数组,只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了)

arr.map(function(value,index,array){
  //do something
  return XXX
})
var ary = [12,23,24,42,1]; 
var res = ary.map(function (item,index,ary ) { 
    return item*10; 
}) 
console.log(res);//-->[120,230,240,420,10];  原数组拷贝了一份,并进行了修改
console.log(ary);//-->[12,23,24,42,1];  原数组并未发生变化
4.forof遍历

可以正确响应break、continue和return语句

for (var value of myArray) {
console.log(value);
}
5.filter遍历

不会改变原始数组,返回新数组

var arr = [
  { id: 1, text: "aa", done: true },
  { id: 2, text: "bb", done: false }
]
console.log(arr.filter(item => item.done))
转为ES5
arr.filter(function (item) {
  return item.done;
});
var arr = [73,84,56, 22,100]
var newArr = arr.filter(item => item>80)   //得到新数组 [84, 100]
console.log(newArr,arr)
6.every遍历

every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
console.log( arr.every( function( item, index, array ){ 
        return item > 3; 
    })); 
false
7.some遍历

some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。

var arr = [ 1, 2, 3, 4, 5, 6 ]; 
   
    console.log( arr.some( function( item, index, array ){ 
        return item > 3; 
    })); 
true
8.reduce

reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。

var total = [0,1,2,3,4].reduce((a, b)=>a + b); //10

reduce接受一个函数,函数有四个参数,分别是:上一次的值,当前值,当前值的索引,数组

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array){
 return previousValue + currentValue;
});
9.reduceRight

reduceRight()方法的功能和reduce()功能是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加。
reduceRight()首次调用回调函数callbackfn时,prevValue 和 curValue 可以是两个值之一。如果调用 reduceRight() 时提供了 initialValue 参数,则 prevValue 等于 initialValue,curValue 等于数组中的最后一个值。如果没有提供 initialValue 参数,则 prevValue 等于数组最后一个值, curValue 等于数组中倒数第二个值。

var arr = [0,1,2,3,4];
 
arr.reduceRight(function (preValue,curValue,index,array) {
    return preValue + curValue;
}); // 10
10.find

find()方法返回数组中符合测试函数条件的第一个元素。否则返回undefined

var stu = [
    {
        name: "张三",
        gender: "男",
        age: 20
    },
    {
        name: "王小毛",
        gender: "男",
        age: 20
    },
    {
        name: "李四",
        gender: "男",
        age: 20
    }
]
function getStu(element){
   return element.name == "李四"
}
 
stu.find(getStu)
//返回结果为
//{name: "李四", gender: "男", age: 20}

ES6方法

stu.find((element) => (element.name == "李四"))
11.findIndex

对于数组中的每个元素,findIndex 方法都会调用一次回调函数(采用升序索引顺序),直到有元素返回 true。只要有一个元素返回 true,findIndex 立即返回该返回 true 的元素的索引值。如果数组中没有任何元素返回 true,则 findIndex 返回 -1。
findIndex 不会改变数组对象。

[1,2,3].findIndex(function(x) { x == 2; });
// 返回索引值1

[1,2,3].findIndex(x => x == 4);
// 返回索引值 -1.
12.keys,values,entries

ES6 提供三个新的方法 —— entries(),keys()和values() —— 用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历

for (let index of ["a", "b"].keys()) {
console.log(index);
}
// 0
// 1
for (let elem of ["a", "b"].values()) {
console.log(elem);
}
// "a"
// "b"
for (let [index, elem] of ["a", "b"].entries()) {
console.log(index, elem);
}
// 0 "a"
// 1 "b"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106540.html

相关文章

  • JavaScript遍历对象和数组方法总结

    摘要:日常开发中我们难免需要对数组和对象进行遍历,今天抽空来总结下遍历数组和对象常用的方法。使用遍历对象注只能遍历出自身可枚举的属性,而不能遍历出原型链上面的属性。 日常开发中我们难免需要对数组和对象进行遍历,今天抽空来总结下遍历数组和对象常用的方法。 Javascript遍历数组总结 我们定义一个数组 var arr = [2,4,6]; 1.使用for循环遍历 var lengt...

    jiekechoo 评论0 收藏0
  • Javascript各种数组遍历方法归纳总结和兼容写法

    摘要:主要用于枚举对象数组遍历效率最低的方法。当前数组元素的值。传递给函数的初始值注意对于空数组是不会执行回调函数的。 前言 PS: 2018/04/26 优化一下排版,重新梳理一下方法,补充一些信息,删除JQuery库用法,只讲解Javascript自带的, for in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。主要用于枚举对象, 数组遍历效率最低的方法。 va...

    Sanchi 评论0 收藏0
  • JavaScript数组循环遍历总结

    摘要:如果省略,则将用作值返回值如果函数为所有数组元素返回,则为否则为。不为数组中缺少的元素调用该回调函数。数组元素的数字索引。方法会为中的每个元素调用函数,直到返回,或直到到达数组的结尾。 这一部分应该放在《JavaScript处理数组函数总结》里面的,但是。。。。。。没有但是。 1. for for循环最常用的地方是利用索引来遍历数组: var arr = [Microsoft,Goog...

    missonce 评论0 收藏0
  • Javascript基础之Array数组API

    摘要:数组原型提供的方法非常之多,主要分为三种直接修改原数组原数组不变,返回新数组数组遍历方法直接修改原数组的删除一个数组中的最后的一个元素,并且返回这个元素添加一个或者多个元素到数组末尾,并且返回数组新的长度删除数组的第一个元素,并返回这个元素 Javascript数组原型提供的方法非常之多,主要分为三种: 直接修改原数组 原数组不变,返回新数组 数组遍历方法 直接修改原数组的API ...

    hsluoyz 评论0 收藏0
  • javascript遍历方法总结

    摘要:总之,是用来循环带有字符串的对象的方法。循环里引入了一种新的循环方法,它就是循环,它既比传统的循环简洁,同时弥补了和循环的短板。 forEach 循环 JavaScript诞生已经有20多年了,我们一直使用的用来循环一个数组的方法是这样的: for (var index = 0; index < myArray.length; index++) { console.log(myAr...

    BothEyes1993 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<