[英]Why is this else statement being considered first than one of the if values above?
此函數遍歷字符串數組。 如果字符串不是以#
開頭,則使用p
標簽進行包裝。 如果字符串的前一個字符串是#
或* * *
則將其包裝為帶有ni
類的p
標簽
function replaceParagraphs(data) {
data = data.split('\n\n')
for (var i = 0; i < data.length; ++i) {
if (data[i].match(/^[^#]/g)) {
var content = data[i].replace(/\n(?=\w)/g, ' ').replace(/\n(?=$)/g, '')
if (data[i - 1].match(/^#/g) || data[i - 1] === "* * *") {
data[i] = '<p class="ni">' + content + '</p>'
} else {
data[i] = '<p>' + content + '</p>'
}
}
}
data = data.join('\n\n')
return data
}
但是似乎沒有考慮data[i - 1] === "* * *"
,因為我最終得到這樣的輸出:
## Test
<p class="ni">Lorem “ipsum?” dolor ‘sit!’ amet</p>
<p>Consetetur eirmod</p>
<p>* * *</p>
<p>“Ipsum?” “‘dolor’” sit! amet, consetetur eirmod tempor—invidunt ut labore</p>
可能是什么問題呢?
編輯:
哦,根據答案和評論,我意識到這是因為代碼產生了<p>* * *</p>
我該怎么做才能避免這種情況?
因為您在上一步中用<p>* * *</p>
替換了* * *
。
該條件data[i - 1].match(/^#/g) || data[i - 1] === "* * *"
data[i - 1].match(/^#/g) || data[i - 1] === "* * *"
只能在第一次迭代中為true。
為清楚起見並考慮解決此類問題,請考慮將其寫入新數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.