2017-01-09 3 views
0

Я пытаюсь заполнить таблицу объектами moment.js значениями каждого дня в каждом столбце. Массив, который я пытаюсь заполнить таблицу с выглядит следующим образом:Заполнить столбцы таблицы данными из многомерного массива javascript

[['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-й итерации цикла «час». Я не могу понять, где я здесь ошибся.

Как я могу исправить эту проблему и есть ли лучший способ решить эту проблему? Любая помощь очень ценится!

ответ

1

Проблема заключается в создании таблицы.

Вы выполняете итерацию от 0 до 83 и пытаетесь получить доступ к внутреннему массиву с помощью этого i. Вы обращаетесь первый массив, правильно используя модуль, но второй индекс массива также должен быть связан с индексом 0-6 значения, так что это:

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

Math.floor(i/12) правильно найти 2-й индекс в 0 - 83 итерация.

BTW: countMultiArray может быть заменен на 7 * 12, нет необходимости в этой функции, поскольку вы уже знаете значения.

Смежные вопросы