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

Populating Array from Another Array in a For Loop in Javascript

本文关键字:数组 另一个 填充 循环 Javascript For      更新时间:2023-09-26

我正在根据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"

然而,不是用每个耳朵的名字填充name,而是用最后一行读到的每个字母填充name,在本例中是通信。所以当我写

的时候
document.write(name[10])

不显示第十只耳朵,而是显示最后一只耳朵的第十个字母。对于状态也会出现同样的问题。基本上,我希望能够调用变量名[1],并让它显示字符串"portal"。Ear"并调用变量status[1],并让它显示字符串"checked out",等等。

将代码块更改为:

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[]。

变量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]);

然后你可以引用存储在name/status数组中的字符串,如name[10], status[23]等