如何在Javascript中创建多维数组?

时间:2012-05-04 16:47:21

标签: javascript jquery

我的目标是迭代ID为ajaxResponse1的表,并将每个COLUMN'S值存储在一个单独的数组中。 valuesArr中的每个条目都是一个包含单个值数组的列。

我尝试使用新的Array而不是新的Object,但我似乎仍然没有收到任何警告我的屏幕输出。我应该使用.push的某种组合来将每个新列值添加到适当的数组中吗?希望很清楚。有任何想法吗?谢谢!

var valuesArr = new Object();

$('#ajaxResponse1 tr').each( function() {
    var colNum = 0;
    $('th, td', this).each( function() {
        valuesArr[colNum] = valuesArr[colNum].push( $(this).html() );   
        colNum++;
    });
});

alert(JSON.stringify(valuesArr));

3 个答案:

答案 0 :(得分:2)

在该数组实际存在之前,您无法将某些内容推送到数组中。

因此,在内循环的每次迭代中,如果初始数组不存在,则必须创建它:

var valuesArr = [];

$('#ajaxResponse1 tr').each( function() {
    $('th, td', this).each( function(i, el) { // nb: implicit column number
        var html = $(this).html();
        if (i in valuesArr) {
            valuesArr[i].push(html);
        } else {
            valuesArr[i] = [ html ];  // new array with one element
        }
    }
});

答案 1 :(得分:1)

push()方法将新项添加到数组的末尾,并返回新的长度。 所以,试着改变它:

valuesArr[colNum].push( $(this).html() );  

只需删除=

即可

此外,您需要在第一次使用它之前初始化数组,请尝试:

valuesArr[colNum] = valuesArr[colNum] ? valuesArr[colNum] : [];

您将在此处找到完整的工作示例 http://jsfiddle.net/57A9z/

答案 2 :(得分:0)

var valuesArr = [];
var r = 0;
var c = 0;

$('#ajaxResponse1 tr').each( function() {
    valuesArr[r] = [];
    $('th, td', this).each( function() {
        valuesArr[r][c] = $(this).html();   
        c++;
    });
    c = 0;
    r++;
});