遍历数组的12种方法

遍历数组的12种方法第一种 普通 for 循环 for vari 0 i lt arr length i 代码 第二种 forEach 循环 arr forEach item index arr gt 代码 forEach 接收一个回调函数作为参数 而这个回调函数有接受三个参数 作为参数 item 是每

  • 第一种:普通for循环
for(var i = 0; i < arr.length;i++ ){ //代码 } 
  • 第二种:forEach循环
 arr.forEach((item,index,arr)=>{ //代码 }) forEach接收一个回调函数作为参数,而这个回调函数有接受三个参数,作为参数。item是每个元素,index元素在数组中的下标,arr数组本身。 没有返回值! 
  • 第三种:map循环
 var brr= arr.map((item,index,arr)=>{ //代码 return item * 2; }) map的用法和forEach差不多。但是map是有返回值的。他的返回值是一个新数组 arr---->[1,2,3] brr---->[2,4,6] 
  • 第四种:for–of
 只有是现实iterator 接口的才能用for---of.对象不能 for(var item of arr){ //代码 } 
  • 第五种:filter
 var arr = [ {name:'张三',age:'20'}, {name:'李四',age:"50"} ] arr.filter(item=>{ return item.name; //返回值是 arr本身,所以元素的name都为true }) arr.filter(item=>{ return item.age>30; //[{name:"李四",age:"50"}] }) //接受一个回调函数作为参数,返回值是一个新数组 
  • 第六种:every遍历
 every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。(全部符合条件) var arr=[50,6,70,80]; arr.every((item,index,arr)=>{ return item > 50; //每一项数据都要大于50 }) //false 
  • 第七种:some遍历
 some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。(只要有一个符合) var arr=[50,6,70,80]; arr.some((item,index,arr)=>{ return item > 50; //只要有一项数据都要大于50 }) //true 
  • 第八种:reduce
 reduce()方法接收一个函数作为累加器,数组中每个值(从左往右)开始缩减,最重为一个值 [1,2,3].reduce((a,b) => { return a + b;//6 }) [1,2,3].reduce((previousValue,currentValue,index,arr)=>{ return previousValue + currentValue; }) reduce还有第二个参数,我们可以把这个参数作为第一次调用callback时的第一个参数,上面这个例子因为没有第二个参数,所以直接从数组的第二项开始,如果我们给了第二个参数为5 [1,2,3].reduce((previousValue,currentValue,index,arr)=>{ return previousValue + currentValue; },5) // 6, 8 ,11 第一次调用的previousValue的值就用传入的第二个参数代替, 
  • 第九种: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 7 = 4 + 3 第一次 9 = 2 + 7 第二次 10 = 9 + 1 第三次 10 = 10 + 0 第四次 
  • 第十种: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} 
  • 第十一种: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 
  • 第十二种: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://javaforall.net/233086.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • perl正则表达式实现大写字母转小写字母

    perl正则表达式实现大写字母转小写字母这个功能不难,但是要求必须用s///的形式,而且后面不能加第三个参数,不能是s///g这样的形式。不过可以采用多个这样的表达式。例如 s/A/a/s/B/b/s/AB/ab/…………….最终就是要求所有这些表达式组合起来,使得不论输入多少个大写字符,都会被转化为小写。我在atftpd的pcre功能中需要我将大写的请求文件转化为小写,所以需要一个rules文件

    2022年5月6日
    72
  • Impala与Hive的比較

    Impala与Hive的比較

    2021年12月2日
    44
  • 用AVX2指令集优化浮点数组求和

    用AVX2指令集优化浮点数组求和用AVX2指令集优化浮点数组求和一、AVX2指令集介绍二、代码实现0.数据生成1.普通数组求和2.AVX2指令集求和:单精度浮点(float)3.AVX2指令集求和:双精度浮点(double)三、性能测试测试环境计时方式测试内容进行性能测试第一次测试第二次测试四、总结个人猜测原因:一、AVX2指令集介绍AVX2是SIMD(单指令多数据流)指令集,支持在一个指令周期内同时对256位内存进行操作。包含乘法,加法,位运算等功能。下附Intel官网使用文档。Intel®IntrinsicsGuid

    2022年5月7日
    47
  • goc课程介绍_演示

    goc课程介绍_演示第一课GoC简介和演示【C/C++程序设计语言】“程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。”(这是百度百科上的程序设计语言定义)通俗的讲,程序是由一些“命令”组成,这些“命令”是一些符合指定规则的符号。根据不同的需求和规则,现今有近百种有不同的编程语言,C/C++是最流…

    2022年4月19日
    76
  • unity安装使用教程_免费版签名

    unity安装使用教程_免费版签名1、进入Unity官网,滑动到最底部,点击“所有版本”:

    2022年4月19日
    69
  • CentOS7开启端口(永久)

    CentOS7开启端口(永久)redis等服务启动后,外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问这些端口号。方法一:使用firewall1、运行命令:firewall-cmd–get-active-zones运行完成之后,可以看到zone名称,如下:2、执行如下命令命令:firewall-cmd–zone=public–add-port=6379/tcp–per…

    2022年6月23日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号