Два массива в цикле с JavaScript - PullRequest
0 голосов
/ 02 июля 2018

У меня проблема в моем скрипте. У меня есть два массива, который является данными, а также месяц.

Я хочу добавить два слияния месяца в данные, но тогда в месяце отображается только 1 значение, вот мой код:

const months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];

ali_fcr.get().then((d) => {
  let store = '';

  let getTotal = d.reduce(function(x, y) {
    return (x * 1) + (1 * y);
  });

  let new_array = d.map((data) => {
    for (let i = 0; i < data.length; i++) {
      return '<td class="ta"><center><a class="ta" href="' + months[i] + '/ali">' + data + '</a></center></td>';
    }
  });

  new_array.unshift('<td>Case Receive</td>');
  new_array.push('<td style="color:red; text-align:center;">' + getTotal + '</td>');
  new_array.forEach((data) => {
    store += data;
  });

  _doc.querySelector('tr[data-alicase-category="cr"]').innerHTML = store;

});

но результат в моем html-файле равен january значению месяца.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я думаю, что это возвращение не позволяет сделать цикл из data, он просто берет первый:

let new_array = d.map((data) => {
        for(let i = 0; i < data.length; i++) {
            return '<td class="ta"><center><a class="ta" href="' + months[i] + '/ali">' + data + '</a></center></td>';   
        }
    });

Я предлагаю вам сохранить функции массива, такие как:

let new_array = d.map(data => data.map(
  (d_data, i) => '<td class="ta"><center><a class="ta" href="' + months[i] + '/ali">' + data + '</a></center></td>'));

Кроме того, я не знаю, как структурирована data, поэтому я понятия не имею, хотите ли вы вставить внутрь <td> значение d_data вместо data.

В любом случае, надеюсь, это поможет. Удачного кодирования! :)

0 голосов
/ 02 июля 2018

Jaromanda X сказал это в комментариях, но это ваш цикл for внутри функции, использующей ключевое слово return. Нефункциональные блоки (например, if, while, for) ничего не возвращают, поэтому вызов return «всплывет» в область действия функции, в этом случае функция map будет возвращена после одной итерации.

Решение: рассмотрите возможность помещения этой строки html в массив, а затем возвращаете htmlarray.join(‘’) из функции карты. Теперь ваш цикл может завершиться, и данные будут возвращены вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...