js中遍歷物件(5種)和遍歷陣列(6種)的方法總結

2021-09-21 06:47:58 字數 3442 閱讀 6194

一、遍歷物件方法

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 返回乙個陣...