【问题标题】:Javascript array sorting problemJavascript数组排序问题
【发布时间】:2011-02-15 15:45:12
【问题描述】:

我有一个这样的 JavaScript 数组:

a[0][0] = "apple";
a[0][1] = 6.5;
a[1][0] = "orange";
a[1][1] = 4.3;
a[2][0] = "pear";
a[2][1] = 3.1;

我想按浮点数字段升序排序,并按升序分配内容。

a[0][0] = "pear";
a[1][1] = 3.1;
a[1][0] = "orange";
a[1][1] = 4.3;
a[2][0] = "apple";
a[2][1] = 6.5;

我已尝试对内容进行排序,但代码似乎不允许浮点数。

另外,我不知道如何按升序重新分配内容。 谁能帮帮我?

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

【问题讨论】:

  • 试试 a.sort(function(a,b){return a[1] > b[1];}); ?负值返回 true,我认为
  • 您看到了什么错误?该代码有效,至少对于主要类别:jsbin.com/ulite3
  • @BiAiB: 不,如果a 应该在b 之前,sort 调用的函数应该返回<0,如果a 应该在@987654331 之后,>0 @,或0,如果它们相同。
  • 你提供的代码有你想要的输出
  • @T.J.克劳德:关于您对我的(不正确的)答案的评论:上面显示的用于设置数组的代码无法按原样工作。仍然需要a[i] = []a = []

标签: javascript arrays sorting


【解决方案1】:

如果你没有引用的代码部分是正确的,那应该可以工作

var index;
var a = [];  // inferred

a[0] = [];   // inferred
a[1] = [];   // inferred
a[2] = [];   // inferred

a[0][0] = "apple";
a[0][1] = 6.5;
a[1][0] = "orange";
a[1][2] = 4.3;
a[2][0] = "pear";
a[2][3] = 3.1;

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

for (index = 0; index < a.length; ++index) {
  display(a[index].join());
}

Live copy

输出:

梨,3.1
橙色,4.3
苹果,6.5

题外话:一种更有效,也许更清晰的初始化数组的方法:

var a = [
    ["apple", 6.5],
    ["orange", 4.3],
    ["pear", 3.1]
];

Live copy

【讨论】:

    【解决方案2】:

    您是否正确创建了数组? 您的排序功能是正确的...

    var a=[['apple',6.5],['orange',4.3],['pear',3.1]];
    a.sort(function(a,b){return a[1]-b[1]});
    
    /*  returned value: (Array)
    pear,3.1,orange,4.3,apple,6.5
    */
    

    【讨论】:

      【解决方案3】:

      你只需要改变排序函数中的a、b顺序

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

      在你的 firebug、dragonfly 或 webkit 控制台中试试这个

      var a = [["apple",6.5],["orange",4.3],["pear",3.1]];
      a.sort(function(a,b){return b[1] -a[1];});
      
      console.log(a);
      

      【讨论】:

      • 他的代码运行良好;你的数组向后。见jsbin.com/ulite3(他的版本)。
      猜你喜欢
      • 2022-06-21
      • 2011-09-27
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 2016-09-26
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多