陣列和物件的遍歷方法小結

2021-07-25 18:51:10 字數 1857 閱讀 3390

**如下

for(var i=0;i

length;i++)

注:有待優化的空間

for(var i=0,len=arr.

length;i

i++)

注:將長度快取起來,避免重複獲取,基本是效能最高的一種陣列遍歷方法。(在遍歷長度較多的陣列時,才會顯示優勢)

arr.foreach(function

(el))

注:陣列自帶的方法

var arr=[2,3,4]

for(var item

in arr)

注:效率很低.該方法獲取的是鍵名。應用於array時,為下標index,應用到物件時,為key。下文提到的for of迴圈獲取到的是鍵值。

arr.map(function

(item))

注:方式優雅,效率很低,還不如foreach

for(var item

of arr)

注:是es6所支援的方法,凡是具有iterator介面的資料介面,都可以使用for of遍歷他的成員。其內部的實現方法是呼叫資料結構的symbol.iterator 方法。for of迴圈的使用範圍包括:陣列,set,map,類陣列物件(如arguments物件,dom nodelist物件等),generator物件,以及字串等

關於物件的遍歷,主要是指其屬性的遍歷。以下總結6種方法來遍歷物件的屬性

for in迴圈遍歷物件自身可繼承的可列舉屬性(不包含symbol屬性)

該方法返回乙個陣列,包含物件自身的(不包含繼承的)所有可列舉的屬性(不包含symbol屬性)

注:大多數情況下,我們只關心物件自身的屬性,引入繼承的屬性會讓問題 複雜化。所以盡量不要用for in迴圈而使用object.keys()代替

包含物件自身的所有屬性(不包含symbol屬性,但是包含不可列舉的屬性)

返回乙個陣列,包含物件自身的所有sybmol屬性。

返回乙個陣列,包含物件自身的所有屬性,不管屬性名是否是symbol或字串,也不管是否是可列舉的

與for in迴圈相同

描述

物件的每個屬性都有乙個描述物件(descriptor),用於描述該屬性的行為。

獲取方法

通過object.getownpropertydescriptor方法可以獲取該屬性的描述物件

var a=

object.getownpropertydescriptor(a,"a");

//

引入目的

當改屬性為false時,標示某些操作會忽略這個屬性:

for in 迴圈

object.keys()

json.stringify()

object.assign()

reflect.enumerate()

實際上,引入改屬性的目的,就是為了讓某些屬性能夠規避掉for in迴圈

另外,es6種規定,所有class原型上的方法都是不可列舉的。

遍歷陣列,遍歷物件的方法

遍歷陣列 方法1 for 迴圈 使用臨時變數將陣列長度快取起來,避免重複獲取陣列長度 for var i 0,leng arr.length i leng i 方法2 foreach迴圈 遍歷陣列中的每一項,沒有返回值,對原陣列沒有影響,不支援ie arr.foreach item,index,ar...

js遍歷陣列和物件的方法

第二條鏈結裡有分析不同遍歷方式的效率 var arr name age var obj for in遍歷陣列和和物件 for key in obj foreach遍歷陣列,三個引數依次是陣列元素 索引 陣列本身 arr.foreach function value,index,array 返回乙個陣...

陣列和物件的遍歷

物件的遍歷 1 使用object.keys 遍歷 返回乙個陣列,包括物件自身的 不含繼承的 所有可列舉屬性 不含symbol屬性 var obj object.keys obj foreach function key 2 使用for in 遍歷 迴圈遍歷物件自身的和繼承的可列舉屬性 不含symbo...