循环时是否为数组中的每个元素显示alert()窗口?

时间:2016-10-13 16:31:04

标签: javascript arrays

我正在尝试制作某种搜索功能,其中会出现一个弹出窗口并要求客户输入,然后将其与数组项进行比较,并返回另一个警告窗口,其中包含"找到&# 34;或"未找到"

以下是我的具体功能代码:

this.searchItem = function(){
    var searchInput = window.prompt('Enter the search value:','');
    var i;
    for (i = 0; i< model.items.length; i++){
        if (model.items[i] == searchInput) {
            window.prompt("found");
        } else {
            window.prompt("not found");
        }
    }
}

有点工作。问题是它不断为数组中的每个元素显示一个新的警报窗口。例如,如果我在数组中有6个元素,并且只有一个匹配搜索输入,那么它将显示5个警告窗口,其中&#34;未找到&#34;和#34;发现&#34;。在我关闭前一个或者单击确定按钮后出现另一个。如何让它只向我显示警报窗口,告诉我它是否找到了?谢谢!

6 个答案:

答案 0 :(得分:3)

在循环后放置alert(不是prompt。还需要切换到使用变量来跟踪是否找到了该项:

this.searchItem = function(){
    var searchInput = window.prompt('Enter the search value:','');
    var i;
    var found = false;
    for (i = 0; i< model.items.length; i++){
        if (model.items[i] == searchInput) {
            found = true;
            break;
        }
    }
    window.alert(found ? 'found' : 'not found');
}

答案 1 :(得分:0)

不是每次都显示警报,而是设置变量,例如var found = true。循环终止后,根据该var的状态显示警报。

答案 2 :(得分:0)

只有在循环结束后才必须执行警报时才显示警报,而不是在循环内部。

答案 3 :(得分:0)

由于您在循环后没有在函数中执行任何其他操作,因此只需在找到要查找的元素时返回。如果在没有找到元素的情况下完成循环,则只显示“未找到”。

this.searchItem = function(){
    var searchInput = window.prompt('Enter the search value:','');
    var i;
    for (i = 0; i< model.items.length; i++){
        if (model.items[i] == searchInput) {
            window.alert("found");
            return;
        } 
    }
    window.alert("not found");
}

您还可以使用Array.prototype.indexOfArray.prototype.includes

来简化此操作

答案 4 :(得分:0)

this.searchItem = function(){
    var searchInput = window.prompt('Enter the search value:','');
    var i;
    var found = false;
    for (i = 0; i< model.items.length; i++){
        if (model.items[i] == searchInput) {
           found = true;
        }
    }
    if(found == true)
        window.prompt("found");
    else
        window.prompt("not found")
}

答案 5 :(得分:0)

你告诉它每次找到一条消息时都会显示该消息,如果你只想找到一条匹配,那么只要你找到它就终止循环。

使用break;结束循环,或者只是将i设置为数组长度:

......
 if (model.items[i] == searchInput) {
            window.prompt("found");
            return 0;
            }
.....
window.prompt("Not found"); //if fucntion doesn't return then it's not found.

OR

var found = false;
......
 if (model.items[i] == searchInput) {
            window.prompt("found");
            found = true;
            break;
            }
.....
if(!found) window.prompt("Not found");

OR

......
 if (model.items[i] == searchInput) {
            window.prompt("found");
            found = true;
            i = items.length;
            }
.....
if(!found) window.prompt("Not found");