Javascript 按换行符返回“拆分”;“未定义”;

Javascript 按换行符返回“拆分”;“未定义”;,javascript,jquery,Javascript,Jquery,我有一个文本文件,用新行分隔 $.get("2016-05-06.log", function(data){ var lines = data.split("\n"); $.each(lines, function(n, elem) { var piece = elem.split("]"); console.log(n, ": ", elem); }); 但是,数组行中的第一项返回未定义,因此n=0。这个数组不是零索引的吗?还是我遗漏了什么

我有一个文本文件,用新行分隔

$.get("2016-05-06.log", function(data){
    var lines = data.split("\n");
    $.each(lines, function(n, elem) {
       var piece = elem.split("]");
       console.log(n, ": ", elem);
    });
但是,数组
中的第一项返回未定义,因此
n=0
。这个数组不是零索引的吗?还是我遗漏了什么

编辑:这是我日志文件中的一个示例

[Wed May 04 13:48:44 2016] [error] [client 0.0.0.0] PHP Warning:  Missing argument 1 for getTypeOptionList(), called in /var/www/...proposal.php on line 969 and defined in /var/www/Intranet2/trunk/contracts/functions.php on line 149, referer: http://intranet/...
[Wed May 04 13:48:44 2016] [error] [client 0.0.0.0] PHP Warning:  /var/www/...proposal.php on line 1048 and defined in /var/www/Intranet2/trunk/contracts/functions.php on line 373, referrer: http://intranet/...

您的代码工作正常

一定有很多原因

您的文件似乎包含utf-8 BOM元素或其他内容

为了证明它有一些test.log文件并一个接一个地写入数据,然后检查代码。 也许您最好检查行var是否为空

$(函数(){
$.get(”http://num8er.me/test.log,函数(数据){
变量行=数据分割(“\n”);
对于(var n=0;n

这在JavaScript中似乎是可能的。我在Windows 10上的Node.js v10.11.0上使用WebStorm IDE计算表达式得到以下结果。字符串“|\n”用正则表达式/^(\w|\s)*\\|/,分成3部分,第二部分未定义

这与示例中第一个元素未定义的情况不同,因此它不只是关于数组的开头或其他内容。我的模式中没有换行符,但是在被拆分的字符串中,它不是字符串中的第一个字符。总之,你的例子似乎不是唯一可能发生这种情况的例子

"|\n" . split( /^(\w|\s)*\|/ ) [0]  // -> ""
"|\n" . split( /^(\w|\s)*\|/ ) [1]  // -> undefined
"|\n" . split( /^(\w|\s)*\|/ ) [2]  // -> "\n"

我原以为split()总是返回一个字符串数组。但似乎并不总是如此。不要指望它永远都是未定义的。

数据可能不包含您希望它包含的内容。这里还没有足够的信息供我们帮助。打开开发者工具(在大多数机器上按f12或ctrl+y键),通过单击行号最左边的边缘在第二行设置断点,然后重新加载页面。它应该在断点处停止。然后,当您选择数据并将鼠标悬停在所选内容上时,您应该能够看到其中的内容,从而为您提供一种检查假设的方法。文件是否包含二进制数据?什么是文件类型
text/x-log
?@guest271314是的,它是一个文本文件。@MattBall它只是一个文本,我将用一个数据样本进行编辑谢谢,这成功了!我收到了“未定义”的消息,因此正在检查是否有
行!=空
。我意识到这是因为我试图分割空白行。