循环遍历数组,然后在最后一次出现后执

时间:2014-10-23 13:39:31

标签: javascript jquery

我正在尝试遍历数组。该数组基本上是服务器上.txt文件的列表,如下所示:

12345|Test message
55555|55555's message
12345|Test message 2

我向服务器发出一个简单的GET请求,然后在名为res的变量中获取响应。然后我这样做:

array = res.split("\n");

for(i = 0; i < array.length; i++) {
    array2 = array[i].split("|");
    if(array2[0] == "12345") {
        console.log(array[1]);
    }
}

它将遍历数组的每一行,将其拆分为|然后检查第一个&#34;元素&#34;是12345.如果是,则在控制台中写入消息。但是,我希望它写下最后一条消息而不是每条消息。在这种情况下,它会写:

Test message
Test message 2

但我想写它

Test message 2

&#34;问题&#34;是:你可以遍历数组,但只有在找到最后一条消息后才做一些事情吗?感谢。

3 个答案:

答案 0 :(得分:3)

只需将消息存储在变量中,然后在循环后输出。

array = res.split("\n");

var logMe;
for(i = 0; i < array.length; i++) {
  array2 = array[i].split("|");
  if(array2[0] == "12345") {
    logMe = array[1];
  }
}
if (logMe) {
  console.log(logMe)
}

答案 1 :(得分:2)

或者你可以简单地向后遍历数组:)

array = res.split("\n");

var i = array.length;
for(i; i > 0; i--) {
    array2 = array[i].split("|");
    if(array2[0] == "12345") {
        console.log(array[1]);
        break;
    }
}

(完全是你的代码,只是向后+破坏;如果没有观察其他行的话)

答案 2 :(得分:-1)

这应该这样做:

for(i = 0; i < array.length; i++) {
array2 = array[i].split("|");
if(array2[0] == "12345") {
    console.log(array[1]);
}
if(i == array.lenght - 1){
System.out.println("Message2");
}