JS遍歷物件屬性的幾種方式

2021-09-26 15:52:43 字數 2581 閱讀 7540

es6中 一共有 5 種方法可以遍歷物件的屬性。

☞  「for...in

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

☞   「object.keys

返回乙個陣列,包括物件自身的 (不含繼承的)所有可列舉屬性(不含 symbol 屬性)的鍵名。陣列中屬性名的排列順序和使用 for...in 迴圈遍歷該物件時返回的順序一致 。如果物件的鍵-值都不可列舉,那麼將返回由鍵組成的陣列。

引數:被要求返回其自身屬性的物件

返回值:乙個可表示給定物件所有可列舉屬性的字串陣列

下面**從四個不同的角度去說明:

// 陣列

let arr = ['a', 'b', 'c']

console.log(object.keys(arr))

// console: ['0', '1', '2']

// 類似陣列的物件

let obj =

console.log(object.keys(obj))

// console: ['0', '1', '2']

// 隨機索引的類陣列物件

let anobj =

console.log(object.keys(anobj))

// console: ['2', '7', '100']

// 不可列舉屬性:getfoo

let myobj = object.create({},

} })myobj.foo = 1

console.log(object.keys(myobj))

// console: ['foo']

☞   「object.getownpropertynames

返回乙個陣列,包含物件自身的所有屬性(不含 symbol 屬性,但是包括不可列舉屬性)的鍵名。

該方法的返回值是乙個字串陣列。

// 陣列

var arr = ["a", "b", "c"]

console.log(object.getownpropertynames(arr).sort())

// ["0", "1", "2", "length"]

// 類陣列物件

var obj =

console.log(object.getownpropertynames(obj).sort())

// ["0", "1", "2"]

//不可列舉屬性

var my_obj = object.create({}, ,

enumerable: false

}})my_obj.foo = 1

console.log(object.getownpropertynames(my_obj).sort())

// ["foo", "getfoo"]

☞   「object.getownpropertysymbols

方法返回乙個在給定物件自身上找到的所有 symbol 屬性的陣列。與 object.getownpropertynames 類似,可以將給定物件的所有 symbol 屬性作為 symbol 陣列獲取。

下面是乙個例子

const obj = {}

let a = symbol('a')

let b = symbol('b')

obj[a] = 'hello'

obj[b] = 'world'

const objectsymbols = object.getownpropertysymbols(obj)

objectsymbols

// [symbol(a), symbol(b)]

☞  「reflect.ownkeys

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

下面是乙個簡單的例子

let obj = 

reflect.ownkeys(obj)

// ["enum", "nonenum", symbol(my_key)]

以上的 5 種方法遍歷物件的鍵名,都遵守同樣的屬性遍歷的次序規則:

首先遍歷所有數值鍵,按照數值公升序排列。

其次遍歷所有字串鍵,按照加入時間公升序排列。

最後遍歷所有 symbol 鍵,按照加入時間公升序排列。

js 迴圈遍歷物件的幾種方式

1.v for迴圈 陣列 item index 物件 value key index 2.物件方法獲取key,value陣列 console.log object.keys obj console.log object.values obj 3.for in迴圈物件 object.prototype...

JS陣列遍歷的幾種方式

1 for 2 for.in.var arr 1,2,3,4 for var key in arr 會跳過稀疏散組 3 for.of for var val of arr 4 foreach arr.foreach function item,index,arr 沒有返回值,函式裡依次對應為 陣列元...

JS 陣列和物件的遍歷方式,以及幾種方式的比較。

通常我們會用迴圈的方式來遍歷陣列。但是迴圈是 導致js 效能問題的原因之一。一般我們會採用下幾種方式來進行陣列的遍歷 方式1 for in迴圈 var arr 1,2,3,4,5 var obj for var item in arr obj 這裡的 item 方式2 for 迴圈 for var ...