gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:39:33 25 4
gpt4 key购买 nike

我有一个仅在定义指定变量时才应用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com