JS数组与对象的遍历方法大全

本文简单解析各种数组和对象属性的遍历方法:

文中的范例基于以下数组和对象。

?


1

2

3

4

5

6

7

8

var arrTmp = ["value1","value2","value3"];

var objTmp = {

    aa:"value1",

    bb:"value2",

    cc:function(){

       console.log("value3")

    }

}

一、JS原生方法

1. javascript遍历的常用的遍历方法是for循环和for-in,ES5的时候加上了forEach方法(IE9以下不支持)。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/****js原生遍历****/

//for循环遍历数组

for(var i=0;i<arrTmp.length;i++){

    console.log(i+": "+arrTmp[i])

}

//for-in遍历对象属性,i指代属性名

for(var i in objTmp){

    console.log(i+": "+objTmp[i])

}

//forEach遍历数组,三个参数依次是数组元素、索引、数组本身

arrTmp.forEach(function(value,index,array){

    console.log(value+","+index+","+array[index])

})

2. for-in循环是为了遍历对象而设计的,事实上for-in也能用来遍历数组,但定义的索引i是字符串类型的。如果数组具有一个可枚举的方法,也会被for-in遍历到,例如:

?


1

2

3

4

5

6

7

8

9

10

//for-in遍历数组

for(var i in arrTmp){

    console.log(i+": "+arrTmp[i])

}

//for-in会遍历到数组的属性

arrTmp.name="myTest";

for(var i in arrTmp){

    console.log(i+":"+arrTmp[i])

}

//输出 0:value1  1:value2  2:value3  name:myTest

3. for循环和for-in能正确响应break、continue和return语句,但forEach不行。

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//只会输出value1 value2

for(var i=0;i<arrTmp.length;i++){

    console.log(i+": "+arrTmp[i]);

    if(i==1){

        break;

    }

}

//会输出value1 value2 value3

arrTmp.forEach(function(value){

    console.log(value+);

    if(value==1){

        return;

    }

})

  4. ES6中,新增了for-of遍历方法。它被设计用来遍历各种类数组集合,例如DOM NodeList对象、Map和Set对象,甚至字符串也行。官方的说法是:

for...of语句在可迭代对象(包括 Array, Map, Set, String, TypedArray,arguments 对象等等)上创建一个迭代循环,对每个不同属性的属性值,调用一个自定义的有执行语句的迭代挂钩

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

// for-of遍历数组,不带索引,i即为数组元素

for(let i of arrTmp){

    console.log(i)

}

//输出 "value1" "value2" "value3"

// for-of遍历Map对象

let iterable = new Map([["a", 1], ["b", 2], ["c", 3]]);

for (let [key, value] of iterable) {

  console.log(value);

}

//输出 1 2 3

// for-of遍历字符串

let iterable = "china中国";

for (let value of iterable) {

  console.log(value);

}

//输出 "c" "h" "i" "n" "a" "中" "国"

  5. 上面的方法,注重点都是数组的元素或者对象的属性值。如果单纯的想获取对象的属性名,js有原生的Object.keys()方法(低版本IE不兼容),返回一个由对象的可枚举属性名组成的数组:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

/****Object.keys()返回键名数组****/

//数组类型

let arr = ["a", "b", "c"];

console.log(Object.keys(arr));

// (3) [‘0‘, ‘1‘, ‘2‘]

// 类数组对象

let anObj = { 100: ‘a‘, 2: ‘b‘, 7: ‘c‘ };

console.log(Object.keys(anObj));

// (3) [‘2‘, ‘7‘, ‘100‘]

//一般对象

let xyz = {z: "zzz", x: "xxx", y: "yyy"};

console.log(Object.keys(xyz));

// (3) ["z", "x", "y"]

  javascript原生遍历方法的建议用法:

  • 用for循环遍历数组
  • 用for-in遍历对象
  • 用for-of遍历类数组对象(ES6)
  • 用Object.keys()获取对象属性名的集合

二、jQuery的$.each

jQuery的遍历方法通常被用来遍历DOM元素,用于数组和对象的是$.each()方法,它接受两个参数,分别指代属性名/数组索引和属性值/数组元素:

?


1

2

3

4

5

6

7

8

/****$.each()遍历对象和数组****/

$.each(arrTmp,function(index,value){

    console.log(index+": "+value)

});

$.each(objTmp,function(key,value){

    console.log(key+": "+value)

});

三、underscore的_.each()遍历

underscore.js是一个较流行的插件库,它封住了一些对数组和对象的处理方法。_.each()就用来遍历:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Document</title>

    <script type="text/javascript" src="../lib/underscore.js"></script>

</head>

<body>

<script type="text/javascript">

var arrTmp = ["value1", "value2", "value3"];

var objTmp = {

    aa: "value1",

    bb: "value2",

    cc: function () {

        console.log("value3")

    }

};

//_.each()接受三个参数,分别指代键值、键名和被遍历的对象本身

_.each(arrTmp,function(value,index,array){

    console.log(index +","+ value +","+ array[index])

})

_.each(objTmp,function(value,key,obj){

    console.log(key +","+ value +","+ obj[key])

})

</script>

</body>

</html>

原文地址:https://www.cnblogs.com/masteryin/p/10278002.html

时间: 2024-10-21 09:51:24

JS数组与对象的遍历方法大全的相关文章

JavaScript中,数组和对象的遍历方法总结

循环遍历是写程序很频繁的操作,JavaScript 提供了很多方法来实现. 这篇文章将分别总结数组和对象的遍历方法,新手可以通过本文串联起学过的知识. 数组遍历 方法一:for 循环 for 循环是使用最多,也是性能优化最好的一种遍历方式. var arr = ["a", "b", "c"]; for (var i = 0; i < arr.length; i++) { console.log(arr[i]) } // a b c 同样常规

JSON对象与JSON数组的长度和遍历方法

JSON对象与JSON数组的长度和遍历方法         1.json对象的长度与遍历                 结构:var json={“name”:”sm”,”sex”:”woman”}                 遍历的方法:for(var js2 in json){                                                 alert(js2 + “=” + json[js2]);                            

js中数组与对象的遍历

数组遍历: 1.js基本的for遍历 2.jquery提供的each函数 ----------------------------------- $.each(array, function(){ alert(this); }); ----------------------------------- 对象遍历: js: --------------------------------------------- for (var k in obj) { alert(obj[k]): } jque

js中js数组、对象与json之间的转换

在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ "name": "cxh", "sex": "man" }';JSON对象:var str2 = { "name": "cxh", "sex": "man"

js数组去重的4种方法

js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.indexOf = Array.prototype.indexOf || function(item) { for (var i = 0, j = this.length; i < j; i++) { if (this[i] === item) { return i; } } return -1; } Ar

数组的九种遍历方法

for 循环 遍历数组. 可以使用 break.continue 中断循环. 性能最优 for-in 遍历数组(不推荐)和对象. 遍历集合对象的键名. for-of 遍历数组和其他集合类对象(ES6 新增方法). 遍历集合对象(包括Set. Map)的键值. forEach() 遍历数组. 不可以使用break. continue 中断循环. map() 遍历并操作数组元素,返回新数 组. filter() 遍历并筛选数组元素,返回新数 组. reduce() 遍历并计算数组元素,累计返回最 终

js 数组和对象的复制

js数组复制可以利用数组的合并方法concat()会返回一个新数组的特征 来实现复制 例如 var a=[1,2,3]; var b= a.concat(); 利用 slice()也可以, 返回的也是一个新数组. 对象的深度复制可以采用自定义回调函数实现 function clone(myObj){ if(typeof(myObj) != 'object') return myObj; if(myObj == null) return myObj; var myNewObj = new Obje

原创-整理了下常用的js数组 、对象、数字、字符串的操作方法

终于整理好了...主要是一些常用的函数,包含es6和es5的所有常用的,吧一些不常用的全部砍掉,省的大家看的费事.发现这个到博客上面有点乱.给个百度云地址:https://pan.baidu.com/s/1MwMdW5P8IOoyGRYUQ2dBtQ 直接下就可以 字符串方法 : es6 include 返回布尔值,表示是否找到了参数字符串. 第二个参数表示开始搜索位置 startsWith 返回布尔值,表示参数字符串是否在原字符串的头部. 第二个参数表示开始搜索位置 endsWith 返回布尔

js中判断对象数据类型的方法

1.类型定义 JS是一种弱类型语言.JS拥有动态类型,相同的变量可以用作不同的类型.JS有7种数据类型:三种基本类型(数字,字符串,布尔),两种引用数据类型(对象,数组),两种特殊数据类型(undefined,null). JS有5种原始类型:数字,字符串,布尔,undefined,null. 2.类型判断 对js中不同数据的布尔值类型总结:false:空字符串:null:undefined:0:NaN.true:除了上面的false的情况其他都为true: 如下: var o = { 'nam