簡體   English   中英

Javascript 數組填充空項

[英]Javascript array fills with empty items

我正在解析一個 json 文件,此時已經從電子表格中收集了數據。 誰能告訴我為什么當我這樣設置數組時

function getfaq()
        {
          fetch(faq, settings)
              .then(res => res.json())
              .then((json) => {
                for(var i = 5;i<json.feed.entry.length;i++)
                {
                  col = json.feed.entry[i].gs$cell.col
                  faqdata[i-5] = [];
                  if(col == 1) {
                    faqdata[i-5][0] = "Question:"
                    faqdata[i-5][1] = json.feed.entry[i].gs$cell.inputValue
                  } else if(col == 2)
                  {
                    faqdata[i-5][0] = "Answer:"
                    if(json.feed.entry[i].gs$cell.inputvalue != "")
                    {
                      faqdata[i-5][1] = json.feed.entry[i].gs$cell.inputValue
                    } else {
                      faqdata[i-5][1] = "N/A"
                    }
                  } else if(col == 3)
                  {
                    faqdata[i-5][0] = "Command:"
                    faqdata[i-5][1] = json.feed.entry[i].gs$cell.inputValue
                  } else if(col == 4)
                  {
                    faqdata[i-5][0] = "Image:"
                    faqdata[i-5][1] = json.feed.entry[i].gs$cell.inputValue
                  } else if(col == 5)
                  {
                    faqdata[i-5][0] = "Reference:"
                    faqdata[i-5][1] = json.feed.entry[i].gs$cell.inputValue
                  }
                }
                for(var j = 0;j<faqdata.length;j++)
                {
                  if(faqdata[j][0].includes("Command:"))
                  {
                    faqC[j] = faqdata[j][1]
                    console.log(faqdata[j][1]);
                  }
                }
                
              })
            }

我的 output 看起來像這樣

    [
  <1 empty item>,  'reset',
  <2 empty items>, 'justmaxed',
  <2 empty items>, 'ascended',
  <1 empty item>,  'masteries',
  <1 empty item>,  'gliding',
  <1 empty item>,  'mounts',
  <2 empty items>, 'livingworld',
  <2 empty items>, 'gold',
  <2 empty items>, 'dungeons',
  <3 empty items>, 'fractals',
  <1 empty item>,  'raid'
]

當我把日志扔進去時,我的 output 看起來像

reset
justmaxed
ascended
masteries
gliding
mounts
livingworld
gold
dungeons
fractals
raid

我不明白為什么當我嘗試將它導入數組時它會添加,但當我記錄數據時它會正確顯示。 我已盡力弄清楚,但我不知道為什么它會像這樣添加到數組中......

避免按索引設置數組的不連續元素的一種方法是改用Array.push

代替

faqC[j] = faqdata[j][1]

嘗試

faqC.push(faqdata[j][1])

此外,本着現代函數式編程的精神,考慮用類似的東西替換整個 for 循環:

const faqC = faqdata.filter(fd => fd[0].includes("Command:")).map(fd => fd[1]);

變量 j 被用作 faqC 的索引並導致了您的問題。 如果 j 為 3 但 faqC 當前僅包含一項,則 faqC 的索引 2 將留空。 要解決此問題,請使用faqC.push(faqdata[j][1)以便連續填充 faqC。

暫無
暫無

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

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