JS数组遍历方法集合

就让我们在逆战中成长吧,加油武汉,加油自己

1.for循环

使用零时变量将长度存起来,当数组较大时优化效果才会比较明显。

var ar1=[2,4,6,8]
for(var i=0;i<ar1.length;i++){
    console.log(i)  console.log(ar1[i])
}

2.foreach循环

遍历数组中每个数,没有返回值

使用break不能中断循环,使用return也不能返回到外层函数

var ar1=[2,4,6,8]
ar1.foreach((item,index,arr){
    //第一个参数代表当前元素
    //第二个参数代表当前元素下标
    //第三个参数代表原数组
})
//数组中长度多少就循环多少次

3.for-of循环

运行循环获得键值

var ar1=[2,4,6,8]
for(var i of ar1){
    console.log(i)
    //2,4,6,8
}

for-of可用使用break,continue 和 return 配合使用,跳出循环

for(var i of ar1){
    if(i==4){
        break
    }
    console.log(i)//2
}

对于普通对象直接遍历的话是会报错的 obj is not iterable

for-of循环不支持普通对象,但如果你想迭代一个对象的属性,你可以用for-in循环(这也是它的本职工作)或内建的Object.keys()方法:

可以使用 Object.keys(obj) 方法将对象的键名生成一个数组,然后遍历这个数组

var obj={
        "naem":"张三",
        "age":18
    }
    for(var i of Object.keys(obj)){
        console.log(i+":"+obj[i])
        //name:张三  age:18
    }

4.for-in

只能获得对象的键名,不能获得键值

var obj={
        "naem":"张三",
        "age":18
    }
for(var i in obj){
        console.log(i)
        //name
        //age
    }   

for...in 循环不仅遍历数字键名,还会遍历手动添加的其它键,甚至包括原型链上的键。for...of 则不会这样

let arr = [1, 2, 3]
arr.set = ‘hello‘  // 手动添加的键
Array.prototype.name = ‘word‘  // 原型链上的键

for(var i in arr) {
  console.log(i)
//0
//1
//2
//set
//name
}

for-in是为遍历对象而设计的,不适用于遍历数组。(遍历数组的缺点:数组的下标index值是数字,for-in遍历的index值"0","1","2"等是字符串)

5.map

不会改变原数组,有返回值可用return,成为一个新数组(只是相当于把原数组克隆一份,把克隆的这一份的数组中的对应项改变了)

var ar1=[2,4,6,8,12]
var map1=ar1.map((item)=>{
    if(item==6){
        return item*2
    }
})
console.log(map1)
//[undefined, undefined, 12, undefined, undefined]

之所以会出现undefined,是因为map()方法创建了一个新数组,但新数组并不是在遍历完array1后才被赋值的

下面这样写才是正确的

var map1=ar1.map((item)=>{
    if(item == 6){
        return item * 2
    }
    return item
})
console.log(map1)
//[2,4,12,8,12]

5.filter

不会对原数组进行修改 返回新数组

 var filt=ar1.filter((item,index)=>{
     //返回索引大于2的元素组成新的数组
    if(index>2){
        return item
    }
 })
 console.log(filt)
 //[8,12]

6.reduce

reduce()作为一个循环使用。接收四个参数:初始值(上一次返回值),当前元素值,当前元素下标,原数组。

var a=[4,5,6,7,8]
//item代表一次回调的值 初始值为0
//cart代表当前元素的值
//index当前下标
//arr原数组
var num=a.reduce((item,cart,index,arr)=>{
    return item+=cart
},0)
//初始值为0

console.log(num) //输出为30

7.some

every()与some()方法都是JS中数组的迭代方法。

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

var a=[1,2,4,69,56,89]
var some1=a.some((item)=>{
return item > 50
})
console.log(some1)//true

8.every()

every()与some()方法都是JS中数组的迭代方法。

every()是对数组中每一项运行给定函数,如果该函数所有项返回true,则返回true。一旦有一项不满足则返回flase

var a=[1,2,4,69,56,89]
var some1=a.every((item)=>{
return item > 50
})
console.log(some1)//flase

原文地址:https://www.cnblogs.com/dcyd/p/12353137.html

时间: 2024-10-01 03:39:38

JS数组遍历方法集合的相关文章

js数组遍历方法总结

数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. for(j = 0,len=arr.length; j < len; j++) { } 2.foreach循环 遍历数组中的每一项,没有返回值,对原数组没有影响,不支持IE //1 没有返回值 arr.forEach((item,index,array)=>{ //执行代码 }) //参数:value数组中的当前项, index当前项的索引, array原始数组: //数组中有

js数组去重方法集合

//第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', 'a']; var newArr = []; var len = arr.length; for (i = 0; i < len; i++) { var flag = false; for (var member of newArr) { if (member === arr[i]) { flag =

JS 数组及其方法浅析

近来闲来无事,小码哥突发奇想,手一哆嗦,就把javascript中的数组及其方法小小总结了一下! 在JS里我们很抽象的理解万物皆对象,这大概也是,我们现在在写Js代码的时候,都善于用面向对象的方式写程序的根由吧....不多说,数组Array也是对象无疑了! 首先,我们肯定应该知道什么是数组?其又是如何定义的?都有哪些优点?这都是我们关心的,,, 数组定义:数组说白了就是数据的集合,在内存中,是一块连续内存的地址:JS中数组分为一维数组和多维数组. 定义方式: 1.直接量定义:var Arr=[e

转→js数组遍历 千万不要使用for...in...

看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:http://m.blog.csdn.NET/blog/u014357977/38298263 正文↓ js数组遍历相信大家都不陌生,很多人会想到for循环和 for...in...循环,但是千万不要使用for...in...循环遍历数组,特别是如果你想写点有用的,能够移植的代码时.下面我们来看看这个

js 数组操作大集合

js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度

【Java】用JDK1.5之后的新型数组遍历方法遍历HashMap、HashMap不应该存储多元组

在JDK1.5就多了一种for循环的遍历写法,现在应该没有人用JDK1.4了吧?我见那些2005年出的JAVA书,谭浩强系列的JAVA书都是使用JDK1.5了,当然JDK1.7已经使用的,据说JDK1.7是兼容JDK1.2~JDK1.7,现在的JAVA编程都是基于JDK1.5的.然而由于考试不要求或者其它什么原因,它并不受程序猿的青睐,而在平常实践用,旧式的循环中用多了,老程序猿依旧作为开发主力的情况,也就没有人敢于尝试这种新型的数组遍历方法了,其实这种方法在遍历HashMap的时候尤其有用,能

js数组遍历和对象遍历

针对js各种遍历作一个总结分析,从类型用处:分数组遍历和对象遍历:还有性能,优缺点等. JS数组遍历: 1,普通for循环,经常用的数组遍历 var arr = [1,2,0,3,9]; for ( var i = 0; i <arr.length; i++){ console.log(arr[i]); } 2,优化版for循环:使用变量,将长度缓存起来,避免重复获取长度,数组很大时优化效果明显 for(var j = 0,len = arr.length; j < len; j++){ co

数组遍历方法对比

数组遍历方法对比 forEach函数 函数说明: forEach(f [,o]): 此方法类似于for/in循环,其作用是遍历整个数组并执行函数的某些操作,但它不会遍历数组的属性.它接受一个函数参数,该函数可以有1.2与3个参数.完整的三个参数分别为:数组中的每一个值,数组的索引,数组本身.这个函数没有返回值. 获取数组方法: function getArray(){ var a = new Array(10); for(var i=0, j=a.length; j>i; i++) a[i] =

js操作textarea方法集合

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + requ