2012-11-16 148 views
1

嗨,我看到有負載的例子,但沒有解釋我需要做什麼。Jquery JavaScript創建動態二維數組

我想創建項目並將其添加到2維數組中並進行動態排序。

一些代碼,我一直在瞎搞用:

var Amount = new Array(new Array()); //MULTI ARRAY 
var a = 0; //COUNTER 

$("input[id^='AmountSpent']").each(function(){ 
    Amount[a][a] = [a, $(this).val()]; //THIS IS WHERE I GET STUCK... HOW TO ASSIGN VALUES 
    a = a + 1; 
}); 

之後,我想對數組進行排序。

因此,如果數組是這樣的:

Amount = [[1,2,3,4],[$200,$300,$100,$600]] 

我想排序最高金額第一:$600, $300, $200, $100

誰能請幫助我。


UPDATE


使用我從羅裏得到的代碼(非常感謝)我做了以下內容:

var amounts = [];  
$("input[id^='AmountSpent']").each(function(i, el){ 
    amounts.push({ index: i + 1, value: $(el).val() }); 
}); 
amounts.sort(function(a, b) { 
    if(a.value < b.value) return 1; 
    if(a.value > b.value) return -1; 
    return 0; 
}); 

要通過陣列環路我做:

for (ii = 0; ii < amounts.length; ++ii) { 
console.log(amounts[ii].index + " - " + amounts[ii]); // 
} 

我得到的結果是:

1 - [對象對象]
2 - [對象對象]
3 - [對象對象]

+1

如果你需要一個具體的理由它是一個二維數組?爲什麼不包含包含這兩組信息的對象數組? – adamb

+0

我需要做的是我有一個值說a = 900美元在數組中,我希望有最高值的總和爲900美元,所以基本上我想要索引/ id的[4,3]用於另一種計算。 – Nev

回答

3

多維數組可能是矯枉過正此。就個人而言,我會使用一組對象 - 假設您需要存儲索引。

var amounts = [];  
$(".foo").each(function(i, el){ 
    amounts.push({ index: i + 1, value: $(el).val() }); 
}); 

amounts.sort(function(a, b) { 
    if(a.value < b.value) return 1; 
    if(a.value > b.value) return -1; 
    return 0; 
}); 

Example fiddle


更新

你的循環代碼不訪問value屬性,試試這個:

for (ii = 0; ii < amounts.length; ++ii) { 
    console.log(amounts[ii].index + " - " + amounts[ii].value); 
} 
+0

謝謝你現在就試試吧!你可能是對的矯枉過正,但我​​不是一個硬核程序員,只是在我正在做的一個小項目中遇到這個問題。我需要做的是我有一個值,說a = 900美元在數組中,我希望有最高值的總和爲900美元,所以基本上我想索引/ id的[4,3]用於另一個計算。 – Nev

+0

當我想循環訪問數組時,我得到一個[object object]錯誤@RoryMcCrossan – Nev

+0

你可以用你正在使用的循環代碼更新你的問題 –