JavaScript遍歷物件屬性順序

admin發表於2018-08-22

通常我們遍歷陣列元素,是按照陣列元素索引值大小的順序進行。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var arr = ["螞蟻部落", 5, "青島市南區", "softwhy.com"];
for (var index = 0; index < arr.length; index++) {
  console.log(arr[index]);
}

遍歷是按照索引的順序進行的,非常簡單的程式碼不多介紹。

遍歷物件中屬性也是常見的操作,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var obj = {
  webName: "螞蟻部落",
  "15": 5,
  address: "青島市南區",
  url:"softwhy.com"
}
for (var property in obj) {
  console.log(property);
}

從感性上來講,可能會認為遍歷屬性的順序是按照屬性定義的順序來進行的。

然而事實並非如此,程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201808/22/010459lq2qqc5chppk29cc.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

很明顯屬性的遍歷順序並非預期結果。

總結如下:

(1).首先,遍歷屬性名為數值的屬性,按照數字由小到大。

(2).再次,遍歷屬性名為字串的屬性,按照定義時間由早到晚。

(3).最後,遍歷屬性名為Symbol(ES2015新增)值的屬性,按照定義時間由早到晚。

並且數字屬性總是在字串和Symbol屬性的前面。

相關文章