【问题标题】:How to sort json object based on multiple values with different sorting order [duplicate]如何根据具有不同排序顺序的多个值对json对象进行排序[重复]
【发布时间】:2015-04-21 22:14:48
【问题描述】:

我有以下 JSON 对象

   var data1 =  [
    {id: "1", name: "b", lastname: "y", marks: "10"},
    {id: "1", name: "a", lastname: "x", marks: "20"},
    {id: "2", name: "a", lastname: "x", marks: "30"},
    {id: "2", name: "b", lastname: "x", marks: "40"},
    {id: "2", name: "c", lastname: "z", marks: "60"},
    {id: "3", name: "d", lastname: "x", marks: "50"},
    {id: "3", name: "a", lastname: "c", marks: "70"}    
  ];

我根据不同的条件对这个对象进行什么排序-

首先按名称按升序排序

比按姓氏按降序排列结果

而不是按降序对 rsult 进行排序

字段及其订单类型由网页动态生成。

*** 这里的排序字段和它们的类型不是固定的,它可能是 name asc、marks asc、lastname desc 或 mark desc、lastname desc、name asc 之类的东西

谁能帮我推荐任何 jquery、java 脚本插件或函数?

【问题讨论】:

  • “我有以下 JSON 对象” 那不是 JSON,那是 JavaScript。
  • 你有没有尝试过什么?
  • @TJCrowder :在我的情况下,排序字段和它们的类型不固定,它可能是 name asc、marks asc、lastname desc 或 mark desc、lastname desc、name asc 你建议的答案是否有效对于这种类型条件
  • @AnupamSharma:多标准排序的基本原理就在那里;如何应用标准只是进一步代码的问题。如果您在代码中设置 order 变量时遇到问题,我建议您进行搜索(这里可能已经有关于此的答案),如果您没有找到答案,请用一个示例提出问题,说明您试图得到什么排序工作,理想情况下是在一个正常运行的堆栈片段中(显然排序在 sn-p 中不起作用——或者你不会问!:-))。

标签: javascript jquery json sorting


【解决方案1】:

如果您实现自己的自定义排序功能,您可以使用sort 来实现此目的。像这样的:

function sortFunc(a, b) {
    if (a.name < b.name)  return -1;
    else if (a.name > b.name)  return 1;
    else {
        if (a.lastname < b.lastname)  return 1;
        else if (a.lastname > b.lastname)  return -1;
        else {
            if (a.marks < b.marks) return 1;
            else if (a.marks > b.marks) return -1;
        }
        return 0;
    }
}

console.log(data1.sort(sortFunc));

Example fiddle

【讨论】:

  • Rory 您的答案仅适用于修复模式,但在我的情况下它不是固定的,它可能是名称 >> 姓氏 >> 标记或可能是标记>> 名称>> 姓氏或任何排序字段顺序和排序类型由网页决定
  • 这不是一个好主意。属性名称应始终保持一致。
  • Rory 属性名称是固定的,但它们的位置不是固定的,比如假设我想根据名称和标记对结果进行排序,但另一个人想根据标记和名称对数据进行排序
  • 啊,我现在明白你的意思了。您可能必须为每个案例创建一个订单函数并根据需要应用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2021-04-23
  • 2017-04-06
  • 1970-01-01
  • 2020-05-25
  • 2019-03-28
  • 1970-01-01
相关资源
最近更新 更多