我正在尝试制作某种搜索功能,其中会出现一个弹出窗口并要求客户输入,然后将其与数组项进行比较,并返回另一个警告窗口,其中包含"找到&# 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;。在我关闭前一个或者单击确定按钮后出现另一个。如何让它只向我显示警报窗口,告诉我它是否找到了?谢谢!
答案 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.indexOf
或Array.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");