2015-05-01 37 views
2

幾個星期前我開始使用javascript/jquery,而且我已經被禁用了。我有這個結構的陣列/對象:如何排序多維JavaScript對象?



    { 
     "Array1": [ 
     { 
      "data1": "value", 
      "data2": "value" 
     }, 
     { 
      "data1": "value", 
      "data2": "value" 
     } 
     ], 
     "Array2": [ 
     { 
      "data1": "value", 
      "data2": "value" 
     }, 
     { 
      "data1": "value", 
      "data2": "value" 
     } 
     ] 
    } 

我想通過Array1和Array2對這個數組進行排序。我嘗試過使用.sort()多種方式,但總是說:「對象不支持這個屬性或方法」。有沒有辦法做這種排序?你能給我寫一些例子嗎?非常感謝你。

+5

您無法對對象進行排序。不過,您可以對數組進行排序。對象屬性沒有內在的順序。 – Pointy

+0

哦。我不知道。感謝您的信息! – iuwan

+2

這裏有一些提示:http://stackoverflow.com/questions/1069666/sorting-javascript-object-by-property-value – Mackan

回答

1

儘管無法對對象進行排序,但您可以使用循環,總數,字符串連接和括號式表示法按所需順序訪問屬性。例如,在你的榜樣,如果添加了表明多少個數據點,你有,你可以使用它的值來建立一個循環的屬性:

var myArray = { 
    "Array1": [ 
    { 
     "data1": "value", 
     "data2": "value" 
    }, 
    { 
     "data1": "value", 
     "data2": "value" 
    } 
    ], 
    "Array2": [ 
    { 
     "data1": "value", 
     "data2": "value" 
    }, 
    { 
     "data1": "value", 
     "data2": "value" 
    } 
    ], 
    arrayCount:2 
} 

for (n=1; n<=myArray.arrayCount; n++) { 
    console.log(myArray["Array" + n]); 
} 

這將導致同樣的效果:

console.log(myArray["Array1"]); 
console.log(myArray["Array2"]); 

我相信這將是您按照特定順序訪問對象中數據的最佳選擇。