[英]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.