js遍历对象和js遍历数组

1:使用Object.keys()遍历

返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)

var obj = { a: 1, b: 2, c: 3}//输出一个数组,数组元素是对象属性的集合console.log(Object.keys(obj)); //['a','b','c']//根据属性取属性对应的值Object.keys(obj).forEach((key) => { console.log(obj[key])})

2:使用for…in循环:比上面的多了继承的

(循环可枚举的属性,自身的和继承的)(不含Symbol属性)

for(var i in obj){ console.log(i) //输出属性 console.log(obj[i]) //输出属性对应的值}

3:使用Object.getOwnPropertyNames()遍历:比上面的多了不可枚举的

返回一个数组,包含对象自身的所有属性(不含Symble属性),包括不可枚举属性

var obj = { a: 1, b: 2, c: 3}console.log(Object.getOwnPropertyNames(obj)); //['a','b','c']Object.getOwnPropertyNames(obj).forEach((key)=>{ console.log(key,obj[key]) //a 1 b 2 c 3})

4:Reflect.ownKeys;比上面的多了Symble属性

包含所有的(自身+继承的)

varobj = { a: 1, b: 2, c: 3}console.log(Reflect.ownKeys(obj)); //['a','b','c']Reflect.ownKeys(obj).forEach((key)=>{ console.log(key,obj[key]) //a 1 b 2 c 3})

遍历数组:

第一种:for循环,也是最常见的

const arr = [11,22,33,44,55,66,77,88]for (let i = 0; i < arr.length; i++) { console.log(arr[i])}

第二种:forEach()

 1)、forEach()遍历普通数组

arr.forEach( function(item){ console.log(item)} )

2)、forEach()遍历对象类型数组

const arr = [ {id:1,name:'zhangsan'}, {id:2,name:'lisi'}, {id:3,name:'wangwu'}]
arr.forEach( function(item){ console.log(item.id + '---' + item.name)})

第三种:map()方法

map即是 “映射”的意思 ,原数组被“映射”成对应新数组

var newArr = arr.map( function(value,index){ console.log(value + '---' + index) return value + 10})console.log(newArr)

注意:forEach()和map()区别:

1、forEach:用来遍历数组中的每一项,这个方法执行没有返回值,不影响原数组

2、map:支持return,相当与原数组克隆了一份,把克隆的每项改变了,也不影响原数组

第四种:for….in   方法

for….in 是es5标准, 此方法遍历数组效率低,主要是用来循环遍历对象的属性

1)、 for……in  遍历数组

for(let item in arr){ console.log(arr[item])}

2)、for…..in 遍历对象

循环遍历对象的属性,js中动态获取key,得到某对象中相对应的value = obj[key]

const obj = { a:1, b:2, c:3}
for(let key in obj){ console.log(key + '---' + obj[key] )}

第五种: for…….of    方法    (es6支持)

for(let item of arr){ console.log(item)}

js遍历对象和js遍历数组》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:https://www.hashtobe.com/1104.html