1

嗨,我看到有很多例子,但没有一个解释我需要做什么。

我想创建项目并将其添加到二维数组并动态排序。

我一直在搞乱的一些代码:

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 回答