當我們使用 for in 遍歷物件時,列印結果是否按鍵的順序列印?
答案是:不一定
最近,當我在做乙個專案時,我遇到了乙個要求,即下拉列表中有 3 個固定選項,包括:-1:全部;0:正常;1:無效
。因此,我定義了乙個物件,遍歷它,並將結果放入以上:
var obj = ;所以有今天的文章,見下文。
物件鍵的排序規則到底是什麼樣子的?答案是:
如果鍵是整數(例如,123)或整數字串(例如,“123”),它將從最小到最大排序。 除此之外,所有其他資料型別都是按實際建立物件鍵的順序排列的。
var obj = ;for (let key in obj) ;結果 0 正常 1 無效 -1 全部此外,如果鍵包含除整數或整數字串之外的其他資料型別,則應將整數放在首位,例如:
var obj = ;for (let key in obj) ;結果 1 333 3 555 一 111 I 222 13 444這就是上面的問題,如何讓物件按照鍵的順序輸出?答案是:
將金鑰轉換為非整數字串,並在使用時恢復它。
如果都是整數鍵,則可以這樣做:
每個鍵都附加在一起。 轉換為字串 var obj = ;for (let key in obj) ;結果 -1 全部 0 正常 1 無效但是,如果鍵是各種資料型別的混合,則無法將其轉換為整數,因此可以執行以下操作:
每個鍵都位於前面。 轉換為字串 var obj = ;for (let key in obj) ;結果 A 111 I 222 1 333 13 444// 3 555回到我一開始遇到的問題,它解決了:
var obj = ;最近,我們又遇到了乙個問題,在詳情頁後台返回金鑰,但是頁面需要顯示副本,所以根據上面的“最後”解決方案,我們只能這樣做: 也就是說,當顯示該值時,它是必需的
key+.
拼接,這種寫法是很不友好的。
所以,最後我們用map來處理這個東西,處理起來基本完美,解決方法如下:
定義物件:
const obj = new map([ 1, '都'], 0, '正常'], 1, '失效']])當迴圈時間時: 檢視詳細資訊時: objects#ordered-like-an-object