【问题标题】:Fill columns of a table with data from a multidimensional array javascript用多维数组javascript中的数据填充表的列
【发布时间】:2017-05-23 09:45:34
【问题描述】:

我正在尝试用 moment.js 对象填充表格,其中每个列上的每个日期的值。我试图填充表格的数组如下所示:

[['8th Jan 11AM', '8th Jan 12AM'],['9th Jan 11AM', '9th Jan 12AM'],['10th Jan 11AM', '10th Jan 12AM']]

我正在创建该数组:

for (var i = 0; i < 7; i++) {
    thisMoment = moment().day(i);

    var dayDateStamps = [];
    for (var j = 0; j < 12; j++) {
        dayDateStamps.push(thisMoment.startOf('day').add(j + 6, 'hours').format('lll'));
    }
    dateStamps.push(dayDateStamps);

}

要生成表格,我正在这样做:

function bodyFromDateStamps(dateStamps) {
    var tbody = document.getElementsByTagName('tbody')[0];
    for(var i = 0; i < countMultiArray(dateStamps); i++) {
        if (i % 7 == 0) {
            row = tbody.insertRow(tbody.rows.length);
        }
        row.insertCell(i % 7).innerHTML = dateStamps[i % 7][i];
    }
}

function countMultiArray(array) {
    var iter = 0
    for (var i = 0; i < array.length; i++) {
        for (var j = 0; j < array[i].length; j++) {
            iter += 1
        }
    }
    return iter;
}

但是,目前我得到了这个:

我得到了适量的单元格 (84),但内容在“小时”循环的 1 次迭代后停止。我无法弄清楚我在哪里出错了。

我该如何解决这个问题,有没有更好的方法来解决这个问题? 非常感谢任何帮助!

【问题讨论】:

    标签: javascript arrays multidimensional-array html-table


    【解决方案1】:

    问题是生成表格。

    您正在从 0 迭代到 83,并尝试通过 i 访问内部数组。您正在使用模数正确访问第一个数组,但第二个数组索引也应该绑定到 0-6 值索引,所以这样做:

    row.insertCell(i % 7).innerHTML = dateStamps[i % 7][Math.floor(i/12)];
    

    Math.floor(i/12) 将正确找到 0 - 83 迭代中的第二个索引。

    顺便说一句:countMultiArray 可以替换为 7 * 12,不需要那个函数,因为你已经知道值了。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2015-03-27
      • 2023-03-25
      • 2023-03-17
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多