For..in...和Object.keys之後的輸出順序
阿新 • • 發佈:2021-11-18
在做Excel表格讀取資料的時候,需要將資料轉換為陣列,因為不知道for..in ..的遍歷會有自動排序的作用,所以程式碼看得挺蒙的。
經查資料,for..in..的object型別的輸出按如下規律:
- 如果是純數字的話,會按數字排序後按照數字順序輸出;
- 包含正數和其他的object的鍵,會按照正數順序先排列輸出,再輸出其他項;
- 包含負數,-號識別為字元。
後面看到了有Object.keys的資料轉換,查了一下,這個也會對object進行鍵排序:
(參考:https://zhuanlan.zhihu.com/p/40601459,寫得很好)
總結的情況:
上面這個規則不光規定了不同型別的返回順序,還規定了如果物件的屬性型別是數字,字元與Symbol混合的,那麼返回順序永遠是數字在前,然後是字串,最後是Symbol
文章舉的例子:
Object.keys({ 5: '5', a: 'a', 1: '1', c: 'c', 3: '3', b: 'b' }) // ["1", "3", "5", "a", "c", "b"]
排序規則同樣適用於下列API: