【发布时间】:2012-12-10 21:12:35
【问题描述】:
参考this posting;我可以按 2 个字段对 JSON 对象数组进行排序。 这篇帖子还指出:
“要添加其他列进行排序,您可以在数组比较中添加其他项目。”
//THIS WORKS BUT NEEDS TO SORT BY ALL 5 FIELDS..
function sortRecords(a, b){
//note the minus before -cmp, for descending order
// field1 (Y or N), field2 (numeric), field3 (numeric),
// field4 (Y or N), field5 (Y or N)
return cmp(
[-cmp(a.field1, b.field1), cmp(a.field2, b.field2)],
[-cmp(b.field1, a.field1), cmp(b.field2, a.field2)]
);}
//THIS ONLY SORTS BY field1 and field2
function sortRecords(a, b){
//note the minus before -cmp, for descending order
// field1 (Y or N), field2 (numeric), field3 (numeric),
// field4 (Y or N), field5 (Y or N)
return cmp(
[-cmp(a.field1, b.field1), cmp(a.field2, b.field2), cmp(a.field3, b.field3)],
[-cmp(b.field1, a.field1), cmp(b.field2, a.field2), cmp(b.field3, a.field3)]
);}
function cmp(x,y){
return x > y ? 1 : x < y ? -1 : 0;
}
///implementation
data = $(data).sort(sortRecords);
我在这里做错了什么?
【问题讨论】:
-
这就像读希腊文(顺便我没看),没有有意义的数据,只是一堆函数调用和cmets?用一些数字、字符串或任何不知道所有这些功能做什么的人可以理解的基本示例,可能设置一个jsfiddle 等。
-
@adeneo : 这是我的 JSON 对象数组 {"name":"JOE","field1":"Y","field2":3,"field3":79,"field4" :"Y","field5":"Y"} {"name":"BEN","field1":"Y","field2":15,"field3":113,"field4":"Y", "field5":"N"} {"name":"SUE","field1":"Y","field2":35,"field3":395,"field4":"Y","field5":" Y"} 我想最初的问题是:如何按多个字段对 JSON 对象数组进行排序?我处于这个位置的原因是 b/c 我从 1 个数据源获得了大部分数据,而从另一个数据源获得了其他数据,我对数组进行了 99% 的排序,但我添加了需要使用的“field5”。