1

こんにちは、たくさんの例がありますが、何をする必要があるかを説明しているものはありません。

アイテムを作成して 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

誰でも私を助けてください。


アップデート


Rory から入手したコードを使用して (どうもありがとうございました)、次のことを行っています。

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 - [オブジェクト オブジェクト]

4

1 に答える 1

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

フィドルの例


アップデート

valueあなたのループ コードはプロパティにアクセスしません。これを試してください:

for (ii = 0; ii < amounts.length; ++ii) {
    console.log(amounts[ii].index + " - " +  amounts[ii].value);
}
于 2012-11-16T15:30:54.897 に答える