javascript - For 循环内的 If/Else 语句所需的语法

标签 javascript for-loop if-statement

我有一个仅在定义指定变量时才应用 onclick 的函数。一旦定义了该变量,它就会循环访问一组嵌套数组以生成用户发送到的 URL。我在 if 语句的逻辑中添加了 else 语句,以便如果不满足条件,用户将被发送到默认 URL,其中指出“抱歉,未找到任何项目”。但是,由于它位于一个循环中,该循环会循环遍历不匹配的项以查找匹配的项,因此它会在循环找到匹配项之前始终应用 else 语句。

有更好的语法可以使用吗?

function applyUrl() {

var locSelect = localStorage.getItem("loc");
var positSelect = localStorage.getItem("posit");
var userSelect = locSelect + " - " + positSelect;
if(localStorage.getItem("posit") != null){

        for (var i = 0; i < sortedArray.length; i++) {
        var stuff = sortedArray[i];
        for (var j = 0; j < stuff.length; j++) {
            if(stuff[j] === userSelect) {
                  window.location.href = stuff[1];
                }else{
                  window.location.href = 'default.html';
                }
            }

        }

    }
}

最佳答案

我认为最简洁的方法是在 for 循环之外存储一个变量,然后在完成后导航到它,并且仅在还没有 redirUrl 时才继续循环。

function applyUrl() {

    var locSelect = localStorage.getItem("loc");
    var positSelect = localStorage.getItem("posit");
    var userSelect = locSelect + " - " + positSelect;
    if (localStorage.getItem("posit") != null) {
        var redirUrl;    
        for (var i = 0; i < sortedArray.length && !redirUrl; i++) {
            var stuff = sortedArray[i];
            for (var j = 0; j < stuff.length && !redirUrl; j++) {
                if (stuff[j] === userSelect) {
                    redirUrl = stuff[1];
                }
            }
        }

        window.location.href = redirUrl || 'default.html';
    }
}
<小时/>

更好的写法可能是

function applyUrl() {
    var locSelect = localStorage.getItem("loc");
    var positSelect = localStorage.getItem("posit");
    var userSelect = locSelect + " - " + positSelect;
    if (positSelect != null) {
        // must have 2 elements and contain the user selection.
        var selArray = sortedArray.find(v=>v.length >= 2 && v.indexOf(userSelect) !== -1);
        if(selArray) {
            window.location.href = selArray[1];
        } else {
            window.location.href = 'default.html';
        }
    }
}

关于javascript - For 循环内的 If/Else 语句所需的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45698062/

相关文章:

javascript - 奇怪的 JavaScript 错误

javascript - 如何使用 d3.js 在饼图切片附近显示工具提示?

python - 将 for 循环调整为仅根据 df 中出现的频率返回值

c - 如何用一个函数获取没有重复值的数组

Java编码——有多个正确答案的提示

javascript - 将函数放入 return 语句中

if语句中的C++ QList,默认值是多少?

javascript - 如何使用jQuery直接访问span

php - 循环遍历 foreach php 中的列

javascript - ddslick 值未定义 - 无法传递值