Я хочу получить результат из массива и проверить его один за другим
//////////////////////////////////////////////
//////////// 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.info(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.info(index);
}
return index;
}
// console.info(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';
}
}
Ваш код должен быть включен в вопросе, а не на внешней странице. Кроме того, вместо того, чтобы пытаться проверить каждый результат, просто используйте myA.includes(i)
. См. Как проверить, содержит ли массив объект в JavaScript?
Ваша функция получить идентификатор () просто неверна. Так, как он спроектирован, он зацикливается на вашем массиве моя А и всегда возвращает последний элемент: мохамед. Вам нужно передать этой функции значение для сравнения, перебрать массив и, если он найдет совпадение, вернуть логическое значение 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';
}
Как проверить, находится ли значение в массиве:
Новый стиль (ES6):
if (myA.includes(inp.value)) {
// name found in array
}
Старый стиль:
if (myA.indexOf(inp.value) > -1) {
// name found in array
}
Я бы посоветовал вместо того, чтобы ссылаться на весь ваш код, включить сюда соответствующие фрагменты и показать фактический результат в сравнении с ожидаемым результатом. Люди будут чаще помогать.