Javascript数组排序问题

时间:2011-02-15 15:45:13

标签: javascript arrays sorting

我有一个JavaScript arraylike这个:

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];});

3 个答案:

答案 0 :(得分:3)

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

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

输出:

pear,3.1
orange,4.3
apple,6.5

偏离主题:初始化该数组的一种更有效,也许更清晰的方法:

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

Live copy

答案 1 :(得分: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
*/

答案 2 :(得分:0)

您只需要在排序功能中更改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);