在Javascript中的For循环中从另一个数组填充数组

时间:2015-07-27 18:51:43

标签: javascript arrays for-loop

我正在根据logfile.txt的输出创建运行状况监视器。我将整个日志读入数组,然后在for循环中处理数组。

var txtFile = new XMLHttpRequest();
txtFile.open("GET", "EarLog.txt", true);
txtFile.onreadystatechange = function() {
    if (txtFile.readyState === 4 && txtFile.status === 200) {
        allText = txtFile.responseText;
        lines = txtFile.responseText.split("\n");
    }

    var i = 0;
    var name;
    var status;
    for (i = 5; i < 31; i++) {
        var res = lines[i].split(": ");
        name = res[0]
        status = res[1];
    }

    document.write("<br>" + name[1] + "<br>")

}
txtFile.send(null);

这是我正在阅读的日志文件的一部分。

"Checkout Started at 14:52:11.57 :: Fri 07/24/2015"
StarTeam 11.0 Command Line Interface, Build 11.0.0.82
Copyright (c) 2003-2009 Borland Software Corporation. All rights reserved.
Using ini file: C:\ProgramData\Borland\StarTeam\ConnectionManager.ini
Folder: deployment  (working dir: C:\Deployment\EARS\FutureRelease)
servicing.ear: skipped
portal.ear: checked out
.
.  
.
communications.ear: checked out
"Checkout Completed at 14:54:11.63 :: Fri 07/24/2015"

但是,不是使用每个耳朵的名称填充名称,而是由最后一行读取的每个单独的字母填充,在这种情况下是communications.ear,所以当我尝试编写类似

的内容时
document.write(name[10])

而不是显示第十个耳朵,它显示最后一个耳朵读取的第十个字母。状态也会出现同样的问题。基本上我希望能够调用变量名[1]并让它显示字符串&#34; portal.ear&#34;并调用变量status [1]并让它显示字符串&#34;签出&#34;,依此类推。

2 个答案:

答案 0 :(得分:1)

将代码块更改为:

var i=0;
var name = [];
var status = [];
for (i = 5; i < 31; i++) { 
var res = lines[i].split(": ");
name.push(res[0]);
status.push(res[1]);
}

基本上,您将值存储在不在数组中的变量中,因此当您调用name [10]时,它实际上是指String变量而不是String []。

答案 1 :(得分:1)

变量namestatus是字符串,而不是数组。因此,当您尝试访问第n个元素时,您将获得第n个字母。

如果您希望它们是数组,请更改:

var name;
var status;

为:

var name = [];
var status = [];

然后使用push方法填充数组。变化:

name = res[0]
status = res[1];

为:

name.push(res[0]);
status.push(res[1]);

然后你可以将名称/状态数组中存储的字符串称为名称[10],状态[23]等。