0

我有这个简单的循环:

for (i = 0; i < menuitem.length; i += 1) {
    if (menuitem[i].href == window.location) {
        menuitem[i].className = "current"
    } else {
        if (menuitem[i].nodeType !== 3) {
            menuitem[1].className = "current";
        }
    };

如何用“如果 menuitem[i] 的所有结果都是错误的”替换 else 语句?因为现在对于每个为假的单个语句都会执行 else 语句,我只想在整个循环为假时执行它。

我希望我说清楚了。

谢谢你们的帮助

4

2 回答 2

2

要查看整个数组是否包含错误值,您可以这样做:

var found = false;
for (i = 0; i < menuitem.length; i += 1) {
    if (menuitem[i]) {
        found = true;
    }
}
if (found) {
    // some truthy value was found in the array
} else {
    // no truthy values found in the array
}

要查看整个数组是否不符合您的条件,您可以执行以下操作:

var found = false;
for (i = 0; i < menuitem.length; i += 1) {
    if (menuitem[i].href == window.location) {
        found = true;
    }
}
if (!found) {
    // no items in the array met your condition 
} else {
    // at least one item in the array met your condition
}
于 2012-09-11T02:08:44.533 回答
0

如果你不介意额外的依赖,你可以使用_.js's _.any。(您也可以从源代码中复制该方法。)

于 2012-09-11T02:07:15.277 回答