嗨,我看到有很多例子,但都没有解释我需要做什么。
我想创建项目并将其添加到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 - [对象对象]
答案 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;
});
<强>更新强>
您的循环代码无法访问value
属性,请尝试以下操作:
for (ii = 0; ii < amounts.length; ++ii) {
console.log(amounts[ii].index + " - " + amounts[ii].value);
}