我傳遞一個錯誤消息數組來解析。一個示例的輸入將是:迭代字符串數組會產生錯誤
"An item with this x Id already exists.
An item with this y id already exists.
An item with this barcode already exists.
"
即,該字符串是字面上每一行以上由\ n分離,並在後面加上一個最終\ n。
function(msg)
{
alert("\"" + msg + "\"");
var aLines = msg.split(/\r?\n+/);
for (var i in aLines)
{
if (!aLines[i]) { alert("Error!"); continue; }
alert(i + ": \"" + aLines[i] + "\"");
}
}
我把它分成幾行,並遍歷行。在索引3處,沒有行和第一個條件觸發器。這不應該是一個空白的線?例如「」
然後循環實際上將多一個元素轉換爲4,並顯示一個函數的內容。
這就是我得到的 - 五個警報:
0: "An item with this x Id already exists."
1: "An item with this y id already exists."
2: "An item with this barcode already exists."
Error!
最後一個是最離奇的:
hasObject: "function(o) {
var l = this.length + 1;
... more lines ...
}
我不明白這裏發生了什麼。爲什麼它迭代了一個以上的元素?爲什麼最後一個元素是一個函數?而不應該偏移3是一個空字符串?那就是我不應該提醒「錯誤!」這裏。
您應該檢查aLines'的'長度,並確保它是因爲在最後一行的末尾一個斷行的不是4。 –
'split'在這種情況下將返回4段。最後一段是一個空字符串('「」'),但不是'null'或'undefined'。如果它自己在一行上,你需要忽略最後一個'\ n'。 – Zabba
問題已解決。每個答案都是正確的。謝謝。 –