NO --- 25 Object.keys()
阿新 • • 發佈:2020-08-07
大家在遍歷物件時經常會用到Object.keys()這個方法,但是有時候遍歷出來的keys會排序,而有時候卻按照物件中的順序來出現,先看下面兩個例子:
// 例子1
const obj = { 100: '一百', 2: '二', 7: '七' } Object.keys(obj) // ["2", "7", "100"]
// 例子2 const obj = { c: 'c', a: 'a', b: 'b' } Object.keys(obj) // ["c", "a", "b"]
這時就會發現兩個例子的區別,例子1中的key會排序,例子2中則原樣輸出,這是為什麼呢?
答案:
對於上面那個問題先給出結論,Object.keys
key
的型別進行不同的排序邏輯。分三種情況:
- 如果屬性名的型別是
Number
,那麼Object.keys
返回值是按照key
從小到大排序 - 如果屬性名的型別是
String
,那麼Object.keys
返回值是按照屬性被建立的時間升序排序。 - 如果屬性名的型別是
Symbol
,那麼邏輯同String
相同
這就解釋了上面的問題。