2011-02-15 72 views
0

我有一個JavaScript的arraylike這樣的: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];}); 
+0

試a.sort(功能(A,B){返回一個[1] > b [1];}); ?負值返回true,我認爲 – BiAiB 2011-02-15 15:50:09

+3

你看到了什麼錯誤?該代碼起作用,至少對於主要排序:http://jsbin.com/ulite3 – 2011-02-15 15:50:34

回答

0

你只需要改變A,B順序排序功能

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

試試這個在您的螢火蟲,蜻蜓或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); 
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

前提是你沒有報價是正確的代碼的部分,應該工作

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