簡體   English   中英

為什么首先考慮上述else語句而不是上面的if值之一?

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

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