【问题标题】:Need to sort the Javascript array according to some logic [duplicate]需要根据一些逻辑对Javascript数组进行排序[重复]
【发布时间】:2012-09-28 05:51:36
【问题描述】:

可能重复:
How to sort an array of javascript objects?

我有一个数组myResponse.students[i]

我通过一些逻辑计算数组中每个学生的总分,现在我想根据我计算的总分对数组进行排序。如何使用 javascript 做到这一点?

【问题讨论】:

标签: javascript arrays sorting


【解决方案1】:

假设你的学生是你要排序的数组

myResponse.students.sort(byMark)

function byMark(a, b){
     return b.mark - a.mark; // sort score desc
}

【讨论】:

  • sort 函数将选择数组中的对象作为 a 和 b 进行比较。您可以在 sort 函数中执行任何操作来返回您的定义值。返回值将告诉比较函数如何排序。 return 0 = 相等,return 1 或更大表示 a 大于,return -1 或更低表示 a 低于 b
  • 嗨...我明白了。但在我的情况下,总分不在数组中......我在外面计算......
  • 你能显示你的总分计算功能吗?如果你的计算函数从你的数组对象计算,你可能想要这个function byMark(a,b){ return cal(a) - cal(b); }
【解决方案2】:

MDN

您可以将比较器函数作为参数传递给排序函数。

此函数从数组中取两个值进行比较,您需要提供返回01-1的逻辑如下

var a = [...]; //your array
a.sort(compareFunction);

function compareFunction (a, b)
{
  if (a is less than b by some ordering criterion)
     return -1;
  if (a is greater than b by the ordering criterion)
     return 1;
  // a must be equal to b
  return 0;
}

【讨论】:

    【解决方案3】:

    试试这个

    myResponse.students.sort(function(a,b) { 
        return parseFloat(a.TotalMarks) - parseFloat(b.TotalMarks) ;
    });
    

    排序函数的签名是这样的

    array.sort([compareFunction])

    请阅读文档以更好地了解compareFunction

    链接:array.sort MDN

    【讨论】:

    • 嗨 Naveen.. a & b 这里是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-10-14
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2011-10-28
    相关资源
    最近更新 更多