簡體   English   中英

用JavaScript循環處理兩個數組

[英]Two arrays in a loop with JavaScript

我的腳本有問題。 我有兩個數組,分別是數據和一個月。

我想要的是在數據中追加兩個合並月份,但是然后在月份中僅顯示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月的值。

Jaromanda X在評論中說過,但這是您使用return關鍵字的函數中的for循環。 非功能塊(例如:if,while,for)不返回任何內容,因此調用return將“冒泡”到函數范圍,在這種情況下,導致map函數僅在一次迭代后返回。

解決方案:考慮將html字符串推入數組,然后從map函數中返回htmlarray.join('') 現在您的循環可以完成,數據將一起返回。

我認為這種回報避免了造成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的結構,所以我不知道是否要在d_data而不是data推入<td>值。

無論如何,我希望它會有所幫助。 編碼愉快! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM