![](/img/trans.png)
[英]Jquery .parent().attr().split(' ').pop() returning undefined
[英]Split by newline returning “undefined”
我有一个文本文件,我用新行分隔。
$.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
,返回undefined。 这个数组是不是零索引的吗? 或者我错过了什么?
编辑:这是我的日志文件中的最新示例。
[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文件并一个接一个地写入数据,然后检查您的代码。 也许你最好检查一下line var的空白情况。
$(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>
这似乎可以在JavaScript中实现。 我在Windows 10上的Node.js v10.11.0上使用WebStorm IDE来评估表达式,得到以下结果。 字符串“| \\ n”使用RegularExpression / ^(\\ w | \\ s)* \\ | /分成3部分,第二部分未定义。
这与您的第一个元素未定义的示例不同,因此它不仅仅是关于数组的开头或其他内容。 我的模式中没有换行符,但是在被拆分的字符串中,它不是字符串中的第一个字符。 总而言之,您的示例似乎并不是唯一可能发生的情况。
"|\n" . split( /^(\w|\s)*\|/ ) [0] // -> ""
"|\n" . split( /^(\w|\s)*\|/ ) [1] // -> undefined
"|\n" . split( /^(\w|\s)*\|/ ) [2] // -> "\n"
我原以为split()总是返回一个字符串数组。 但似乎并非总是如此。 不要指望它永远不会被定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.