我想从数组中获取结果并逐一检查
//////////////////////////////////////////////
//////////// this code not works, ////////////
//////////// but not flexible ////////////
//////////////////////////////////////////////
var myA = ["said", "imad", "hassan", "bilal", "mohamed"];
var doc = document.getElementById('div1');
var inp = document.getElementById('input1');
function click1() {
'use strict';
var i = inp.value;
if (i <= 0) {
doc.innerHTML = 'Please type name';
} else if (i === myA[0] || i === myA[1] ||
i === myA[2] || i === myA[3] || i === myA[4]) {
doc.innerHTML = i;
} else {
doc.innerHTML = 'Please type in a correct name';
}
}
/////////////////////////////////////////////////////
//////////// my try to make it flexible, ////////////
//////////// but i get just a last index ////////////
/////////////////////////////////////////////////////
var myA = ["said", "imad", "hassan", "bilal", "mohamed"];
var index = myA[0];
// console.log(index);
var doc = document.getElementById('div1');
var inp = document.getElementById('input1');
function getId(a){
var aL = a.length, index = a[0], x=0;
for(x = 0; x < aL; x++ ){
index = a[x];
// console.log(index);
}
return index;
}
// console.log(getId(myA));
function click1() {
'use strict';
var i = inp.value;
if (i <= 0) {
doc.innerHTML = 'Please type name';
} else if (i === getId(myA)) {
doc.innerHTML = i;
} else {
doc.innerHTML = 'Please type in a correct name';
}
}
答案 0 :(得分:0)
您的 getId()函数完全错误。它的设计方式是遍历 myA 数组,并始终返回最后一个元素: mohamed 。 您需要为该函数提供一个值进行比较,在数组上循环,以防万一找到匹配项,则返回布尔值true。如果没有,则返回false。
function getId(val){
for(var a=0;a<myA.length;a++)
{
if(myA[a]==val)
{
return true;
}
}
return false;
}
现在您可以简单地通过
进行调用if (getId(i)) {
doc.innerHTML = i;
} else {
doc.innerHTML = 'Please type in a correct name';
}
答案 1 :(得分:0)
如何检查值是否在数组中:
新样式(ES6):
if (myA.includes(inp.value)) {
// name found in array
}
较旧的样式:
if (myA.indexOf(inp.value) > -1) {
// name found in array
}