一、遍歷物件方法
1.for...in
遍歷輸出的是物件自身的屬性以及原型鏈上可列舉的屬性(不含symbol屬性),原型鏈上的屬性最後輸出說明先遍歷的是自身的可列舉屬性,後遍歷原型鏈上的
eg:var obj = ;
object.prototype.pro1 = function() {};//在原型鏈上新增屬性
object.defineproperty(obj, 'country', );
object.defineproperty(obj, 'nation', )
obj.contry = 'china';
for (var index in obj)
輸出結果:
key = name value = yayaya
key = age value = 12
key = *** value = female
key = contry value = china
key = pro1 value = function(){}
2.object.keys()
遍歷物件返回的是乙個包含物件自身可列舉屬性的陣列(不含symbol屬性).
eg:var obj = ;
object.prototype.pro1 = function() {}
object.defineproperty(obj, 'country', );
object.defineproperty(obj, 'nation', )
obj.contry = 'china';
object.keys(obj).foreach(function(index) );
輸出結果:
name yayaya
age 12
*** female
contry china
3.objcet.getownpropertynames()
輸出物件自身的可列舉和不可列舉屬性的陣列,不輸出原型鏈上的屬性
eg:var obj = ;
object.prototype.pro1 = function() {}
object.defineproperty(obj, 'country', );
object.defineproperty(obj, 'nation', )
obj.contry = 'china';
object.getownpropertynames(obj).foreach(function(index) );
輸出結果:
name yayaya
age 12
*** female
country ccc
nation undefined
contry china
4.reflect.ownkeys()
返回物件自身的所有屬性,不管屬性名是symbol或字串,也不管是否可列舉.
eg:var obj = ;
object.prototype.pro1 = function() {}
object.defineproperty(obj, 'country', );
object.defineproperty(obj, 'nation', )
obj.contry = 'china';
reflect.ownkeys(obj).foreach(function(index) );
返回結果:
name yayaya
age 12
*** female
country ccc
nation undefined
contry china
5. _.keys
用underscore外掛程式的遍歷方法只可以遍歷出物件自身的可列舉屬性
eg:var obj = ;
object.prototype.pro1 = function() {}
object.defineproperty(obj, 'country', );
object.defineproperty(obj, 'nation', )
obj.contry = 'china';
console.log(_.keys(obj));
輸出結果:
name age *** country
二.遍歷陣列方法
1.foreach
eg:var arr = ['a', 'b', 'c', 'd'];
arr.foreach(function(value, index) )
輸出結果:
value=a index=0
value=b index=1
value=c index=2
value=d index=3
2.map
可以對遍歷的每一項做相應的處理,返回每次函式呼叫的結果組成的陣列
eg:var arr = ['a', 'b', 'c', 'd'];
arr.map(function(item, index, array) )
輸出結果:
a 0b 1
c 2
d 33.for迴圈遍歷
eg:var arr = ['a', 'b', 'c', 'd'];
for (var i = 0; i < arr.length; i++)
輸出結果:
0 a1 b
2 c3 d
4.for...in
eg:var arr = ['a', 'b', 'c', 'd'];
for (var i in arr)
輸出結果:
index:0 value:a
index:1 value:b
index:2 value:c
index:3 value:d
5.for...of(es6)
只遍歷出value,不能遍歷出下標,可遍歷出symbol資料型別的屬性,此方法作為遍歷所有資料結構的統一的方法
eg:var arr = ['a', 'b', 'c', 'd'];
for (var value of arr)
輸出結果:
value a
value b
value c
value d
6.利用underscore外掛程式
eg:var arr = ['a', 'b', 'c', 'd'];
var _ = require('underscore');
_.each(arr, function(value, index, arr) )
輸出結果:
a 0 ['a','b','c',''d]
b 1 ['a','b','c',''d]
c 2 ['a','b','c',''d]
d 3 ['a','b','c',''d]
js遍歷陣列(物件)
例 let arr 1,2,3 for let i 0 iconsole.log arr i 輸出結果 1 2 3 例 let arr 1,2,3 for let i in arr 輸出結果 1 2 3 說明 同普通for迴圈,以key遍歷查詢陣列或物件 例 let arr 1,2,3 for le...
JS中遍歷陣列 物件的方式
1.標準的for迴圈遍歷陣列 不列印自定義屬性和繼承屬性 var array 1,2,3 for var i 0 i array.length i 2.for in 遍歷物件 不要用for in遍歷陣列,因為還會列印自定義屬性和繼承屬性 一般常用來遍歷非陣列的物件並且使用hasownproperty...
js遍歷陣列和物件的方法
第二條鏈結裡有分析不同遍歷方式的效率 var arr name age var obj for in遍歷陣列和和物件 for key in obj foreach遍歷陣列,三個引數依次是陣列元素 索引 陣列本身 arr.foreach function value,index,array 返回乙個陣...