Jquery JavaScript创建动态二维数组

时间:2012-11-16 15:18:48

标签: javascript jquery multidimensional-array

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

我想创建项目并将其添加到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

任何人都可以帮助我。


U P D A T E


使用我从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 - [对象对象]

1 个答案:

答案 0 :(得分: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);
}