这是我的js对象:
var data = [
{ id: 7, name: "test1", sector: "A01" },
{ id: 7, name: "test2", sector: "C03" },
{ id: 8, name: "test4", sector: "B02" },
{ id: 8, name: "test5", sector: "A01" },
{ id: 8, name: "test6", sector: "C03" },
{ id: 7, name: "test3", sector: "B02" },
];
我希望按ID排序此对象,然后按扇区排序,如下所示:
7,test1,A01
7,test3,B02
7,test2,C03
8,test5,A01
8,test4,B02
8,test6,C03
7,test1,A01
7,test2,C03
7,test3,B02
8,test4,B02
8,test5,A01
8,test6,C03
如何解决?
如果您看不到输出,请转到左侧面板上的External Resources并为Firebug添加以下链接:getfirebug.com/firebug-lite-debug.js
答案 0 :(得分:2)
我已经看过你的小提琴,而你正试图减去字符串,这会产生NaN
s,这些字母无法真正用于排序。< / p>
如果您在比较字符串时尝试使用>
或<
,它就可以正常工作。
示例:
firstBy(function (v1, v2) { return v1.id < v2.id ? -1 : (v1.id > v2.id ? 1 : 0); })
.thenBy(function (v1, v2) { return v1.sector > v2.sector; });
这将是您正在寻找的结果。
答案 1 :(得分:0)
只需连接字符串,就可以在没有firstBy().thenBy
构造的情况下完成。 sort
函数的参数如下所示:
function (v1, v2) { return v1.id + v1.sector < v2.id + v2.sector ? -1 : (v1.id + v1.sector> v2.id + v2.sector ? 1 : 0); }
这是fixed fiddle。