如何在JavaScript中基于对象值对数组排序?

如何在JavaScript中基于对象值对数组排序?,javascript,jquery,sorting,object,Javascript,Jquery,Sorting,Object,我有一个对象结果集。它有以下记录 var resultset = [{0: "A", 1: "25.14", 2: "0,0,0,0,30.79,0,7.68,0,0,6.13,0,0"}, {0: "B", 1: "3.26", 2: "0,0,0,31,0,0,0,0,0,0,0,0"}, {0: "C", 1: "37.01", 2: "0,0,0,0,0,0,0,0,0,0,0,0"}, {0: "D", 1: "1.18", 2: "0,0,0,9.63,0,0,0,0,0,0

我有一个对象结果集。它有以下记录

var resultset = [{0: "A", 1: "25.14", 2: "0,0,0,0,30.79,0,7.68,0,0,6.13,0,0"}, 
{0: "B", 1: "3.26", 2: "0,0,0,31,0,0,0,0,0,0,0,0"}, 
{0: "C", 1: "37.01", 2: "0,0,0,0,0,0,0,0,0,0,0,0"},  
{0: "D", 1: "1.18", 2: "0,0,0,9.63,0,0,0,0,0,0,0,0"},  
{0: "E", 1: "0.28", 2: "0,0,0,13.22,0,0,0,0,0,0,0,0"}]
我曾经根据值对这个对象进行排序,即使用下面的代码对索引1进行排序

resultset.sort(compareSecondColumn);

function compareSecondColumn(a, b) {
    //alert("A Value -->"+a[1]);
    //alert("B Value -->"+b[1]);
    if (a[1] == b[1]) {

        return 0;
    }
    else {
        //alert(b[1]);
        return (a[1] > b[1]) ? -1 : 1;
        }
   }
但我无法根据索引1进行排序

我的预期输出如下,根据索引1(37.01)排序

我试着从下面的URL做一些对象排序机制。但对我不起作用


您不能对字符串进行排序,只需将其解析为float,然后进行比较

function compareSecondColumn(a, b) {
    var valueA = parseFloat(a[1]);
    var valueB = parseFloat(b[1]);
    if (valueA == valueB) {
        return 0;
    } else {
        return (valueA  > valueB) ? -1 : 1;
    }
}

您正在尝试对字符串进行排序

您应该解析该值并像

resultset.sort(function(a, b){
  return parseFloat(b[1]) - parseFloat(a[1]);
});

@Tushar包含了我的预期输出,你能得到我的问题吗?如果你正在排序的字段是一个以%字符结尾的字符串,那么你的排序函数需要将值转换为数字进行数字排序。使用parseFloat(),它将自动忽略%。@nnnn我可以将其转换为数字。这不是问题。即使我改变了我也不能做那种事。这是我的问题(这对我来说非常困难。排序有那么困难吗?我们有成千上万的排序问题,所以,即使搜索也很困难。看起来不错,很有效。但是为什么要使用
==
?我建议使用
==
,因为我们在比较原语;大多数linting工具都会对此表示不满。我认为这与预期的顺序相反r(应该是
parseFloat(b[1])-parseFloat(a[1])
),但它是一个平滑的实现。@yangmills理论Oops..Tq用于注意..更新了代码。
resultset.sort(function(a, b){
  return parseFloat(b[1]) - parseFloat(a[1]);
});