Javascript如果声明没有评估为真

时间:2010-06-22 19:04:28

标签: javascript comparison

我试图在forEach循环中捕获最后一个案例,但所有情况似乎都评估为false而不是最后一个为true。我的代码:

for(var i in networks){
    if (i == (networks.length - 1)){
        //do stuff
    }
}

出了什么问题?

2 个答案:

答案 0 :(得分:4)

试试这个:

for(var i = 0, j = networks.length; i < j; i++){
    if (i == (j - 1)){
        //do stuff
    }
}

我个人鄙视JavaScript中的for...in循环,因为它带来了大量不需要的属性,它不可靠 - 需要大量的健全性检查以确保当前属性不是不需要的类型或未定义。我可以继续谈论这件事。我建议你唯一一次思考使用它的时候是你在迭代对象而你需要键值时。

答案 1 :(得分:1)

如果网络是从0到n的数字数组,那应该可行。 ;)如果不是,您可能需要考虑标准for循环:

for(var i = 0; i < networks.length; i++) {
    var network = networks[i]; // in case you need this.
    if (i == (networks.length - 1)){
        //do stuff
    }
}