首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用jQuery按多个字段对JSON进行排序

尝试用jQuery按多个字段对JSON进行排序
EN

Stack Overflow用户
提问于 2012-12-10 21:12:35
回答 1查看 2.5K关注 0票数 1

对于this posting,我可以按两个字段对JSON对象数组进行排序。这篇文章还说:

“若要添加要排序的其他列,可以在数组比较中添加其他项。”

代码语言:javascript
复制
//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);

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-11 18:18:24

我一直在使用StackOverflow,我结合了几个如何排序/排序的例子;这个函数似乎给了我我想要的.

将这个JSON对象数组作为数据

{“名称”:“JOE”、"field1":"Y“、"field2":3、"field3":79、"field4":"Y”、"field5":"Y"} {"name":"BEN“、"field1":"Y”、"field2":15、"field3":113、"field4":"Y“、"field5":"N"} {”名称“:”SUE“、"field1":"Y”、“Y”"field2":35,"field3":395,"field4":"Y","field5":"Y"}

我可以调用sortRecords()来对我想要的进行排序。

{"name":"JOE“、"field1":"Y”、"field2":3、"field3":79、"field4":"Y“、"field5":"Y"} {"name":"SUE”、"field1":"Y“、"field2":35、"field3":395、"field4":"Y”、"field5":"Y"} {名称:“BEN”、"field1":"Y“、”Y“"field2":15,"field3":113,"field4":"Y","field5":"N"}

代码语言:javascript
复制
function sortRecords(a, b){
    if (a.field1 < b.field1){
        return 1;
    } else if (a.field1 > b.field1){
        return -1;
    } else if (a.field2 < b.field2){
        return 1;
    } else if (a.field2 > b.field2){
        return -1;
    } else if (a.field3 < b.field3){
        return 1;
    } else if (a.field3 > b.field3){
        return -1;
    } else if (a.field4 < b.field4){
        return -1;
    } else if (a.field4 > b.field4){
        return 1;
    } else if (a.field5 < b.field5){
        return -1;
    } else if (a.field5 > b.field5){
        return 1;
    } else {
        return 0;
    }
}

data = $(data).sort(sortRecords);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13809352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档