我有一个文本文件,我用新行分隔。
$.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);
});
然而,数组lines
中的第一项,即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/...
答案 0 :(得分:0)
您的代码正常运行。
必须有很多原因。
好像你的文件有utf-8 BOM元素或其他东西。
要证明它有一些test.log文件并一个接一个地写入数据,然后检查您的代码。 也许你最好检查线条变量是否为空。
$(function() {
$.get("http://num8er.me/test.log", function(data){
var lines = data.split("\n");
for(var n = 0; n < lines.length; n++) {
var line = lines[n].toString().replace(/^\s+|\s+$/gm,'');
if(line != '') {
alert(n + ": " + line);
}
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:0)
这在JavaScript中似乎是可能的。我在Windows 10的Node.js v10.11.0上使用WebStorm IDE评估表达式得到以下结果。字符串“ | \ n”分为3个部分,其中RegularExpression / ^(\ w | \ s)* \ | /,未定义第二部分。
这与您的示例中的第一个元素未定义的情况不同,因此它不仅仅涉及数组的开头或其他内容。而且我的模式中没有换行符,但是字符串被分割了,它不是字符串中的第一个字符。因此,总而言之,您的示例似乎并不是唯一可能发生的情况。
"|\n" . split( /^(\w|\s)*\|/ ) [0] // -> ""
"|\n" . split( /^(\w|\s)*\|/ ) [1] // -> undefined
"|\n" . split( /^(\w|\s)*\|/ ) [2] // -> "\n"
我本以为split()总是返回一个字符串数组。但似乎并不总是如此。不要指望它永远不会被定义。