2015-05-01 36 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"]); 

我相信这将是您按照特定顺序访问对象中数据的最佳选择。