我有一个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];});
答案 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());
}
输出:
pear,3.1 orange,4.3 apple,6.5
偏离主题:初始化该数组的一种更有效,也许更清晰的方法:
var a = [
["apple", 6.5],
["orange", 4.3],
["pear", 3.1]
];
答案 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);