使用单个for循环匹配数组中的两个元素

时间:2014-09-13 22:43:34

标签: javascript arrays for-loop

我有以下代码:

var fl = myitems(); //grabs all items (an array)
var f1 = f2 = new String();


function myfunc(){
    //find two items in an array and load vars
    for(i=0; i<fl.length-1; i++){
        if(fl[i] == "match1"){
            f1 = fl[i];
        }
    }
    for(i=0; i<fl.length-1; i++){
        if(fl[i] == "match2"){
            f2 = fl[i];
        }
    }
}

如果可能的话,我想避免额外的()。我尝试if if,但很多时候第一个匹配元素在for循环中已经超过第二个元素之后被捕获。

我确定有一个简单的方法(else if,而else似乎没有做到这一点。)

谁能告诉我这里的常见做法是什么?

2 个答案:

答案 0 :(得分:1)

你可以在同一个循环中进行两个测试:

for (i = 0; i < fl.length - 1; i++) {
    if (fl[i] == "match1") {
        f1 = fl[i];
    } else if (fl[i] == "match2") {
        f2 = fl[i];
    }
}

请注意,比较运算符为==,而不是=

答案 1 :(得分:1)

我知道这不能解答原始问题,但看起来您正在尝试查找数组是否包含'match1'和'match2',您可以使用Array.prototype.indexOf执行此操作:

var items = myitems();
if(items.indexOf('match1') !== -1) {
    // Do whatever you need to do if the array contains 'match1'
}