我在stackoverflow上找到了一个很好的方法,可以根据对象的某个属性对数组进行排序,具体定义请参考:
使用这个函数可以完美地进行单一排序(在所有浏览器中),甚至是嵌套排序中的子排序,但是在Google Chrome中却不起作用!这里是Ege Özcan针对对象数组的排序例程。
function dynamicSort(property) {
return function (a,b) {
return (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;
}
}
使用名为 "Data" 的数组(当然,我的数组有更多的对象对)...
var Data = [{Category: "Business", Value: "ABC"},{Category:"Personal", Value:"XYZ"}];
我可以通过这样做来获得一个正确的排序,其中顺序列出了每个类别中的所有值...
Data.sort(dynamicSort("Value"));
Data.sort(dynamicSort("Category"));
通过首先按 Value
排序,然后按 Category
排序,我的数组按照所有基于 Business 的值排好序,并将所有基于 Personal 的值列在其后。非常完美! 但是在 Chrome 中,数据按类别正确排序,但每个类别内的值的顺序似乎相当随机。
有没有人知道更好的方法来进行排序,可以在 Chrome 中正常工作呢?