【问题标题】:How do I create a Multidimensional Array in Javascript?如何在 Javascript 中创建多维数组?
【发布时间】:2012-05-14 05:46:06
【问题描述】:

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

我尝试使用新数组而不是新对象,但我的屏幕似乎仍然没有收到任何输出警报。我应该使用 .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));

【问题讨论】:

  • This question 可能会对您有所帮助。
  • 尝试将警报放入循环中,以便检查数组中的内容
  • 不是重复的恕我直言,因为这增加了创建原始表的转置的复杂性。

标签: javascript jquery


【解决方案1】:

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

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

只需删除=

另外,第一次使用前需要先初始化数组,试试:

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

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

【讨论】:

    【解决方案2】:
    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++;
    });
    

    【讨论】:

    • 您正在为每一行创建一个条目,而不是为每一列创建一个条目。
    • 是的,我误解了这个问题。查看代码,我认为这样更有意义,但似乎要求不同。干杯:)
    【解决方案3】:

    在该数组实际存在之前,您不能将某些内容推送到数组上。

    所以在你的内部循环的每次迭代中,如果初始数组不存在,你必须创建它:

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

    【讨论】:

    • 工作就像一个魅力。我永远不会猜到这是问题所在。感谢您的帮助!
    • @Anjroo 查看删除了colNum 变量的更新代码示例
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2012-01-15
    • 2011-05-19
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    相关资源
    最近更新 更多