javascript - 使用多维数组 javascript 中的数据填充表的列

标签 javascript arrays multidimensional-array html-table

我正在尝试用 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;
}

但是,目前我得到的是: Table Cells Undefined

我得到了正确数量的单元格 (84),但是内容在“小时”循环的 1 次迭代后停止。我不知道我哪里出了问题。

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

最佳答案

问题是生成表。

您正在从 0 迭代到 83,并尝试通过该 i 访问内部数组。您正在使用模数正确访问第一个数组,但第二个数组索引也应该绑定(bind)到 0-6 值索引,因此请执行以下操作:

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

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

顺便说一句:countMultiArray 可以替换为 7 * 12,不需要该函数,因为您已经知道这些值。

关于javascript - 使用多维数组 javascript 中的数据填充表的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542809/

相关文章:

objective-c - Objective-C获取数组元素?

javascript - Ionic(Angular)从数组中获取正确的数据

javascript - 在 Javascript 中访问多维数组的第 n 个元素时遇到问题

multidimensional-array - AWK 中的数据透视表

c++ - 新矩阵[N][N]失败

javascript - 随机选择剩余的 div Javascript

javascript - HTML 5 动态加载视频导致 iPad 黑屏

javascript - 基于字符串大小的填充?

javascript - 固定标题和第一列的水平和垂直滚动

使用条件运算符声明数组元素的 Javascript 行为异常?