簡體   English   中英

JavaScript split添加了一個額外的空數組項?

[英]JavaScript split add an extra empty array item?

以下代碼讀取一個文件,並將每一行變成數組項:

fs.readFile('en.txt', 'utf8', function (err, data) {
  if (err) {
    return console.log(err)
  }

  enStrings = data.split(/[\r\n]+/g)
}

en.txt看起來像這樣:

Line 1
Line 2
Line 3

但是我很困惑。 console.log(enStrings)輸出以下內容:

[ 'Line 1', 'Line 2', 'Line 3', '' ]

為什么要添加最后一個空項目? 以及如何將其刪除?

如果您的文本文件具有尾隨的換行符(這很常見),則會發生這種情況。

為何在分割前不trim

enStrings = data.trim().split(/[\r\n]+/g);

或者,您可以在分割之前僅刪除尾隨的換行符。

enStrings = data.replace(/[\n\r]+$/, '').split(/[\r\n]+/g)

但是,如果數據很長,則可能要避免在拆分之前重新創建整個字符串的性能下降。 如果是這樣,您可以使用以下命令將其彈出。

if (enStrings.length && !enStrings[enStrings.length-1]) {
    enStrings.pop();
}

您可以使用filter

console.log(enStrings.filter(Boolean));

空字符串是虛假值,因此使用.filter(Boolean)將僅列出真實值並從數組中刪除空字符串。

您可以嘗試以下方法:

enStrings = data.split(/[\r\n]+/g);
enStrings.splice($.inArray('', enStrings), 1);

暫無
暫無

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

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