Я пытался два пути для достижения этой цели, пожалуйста, смотрите ниже:Каков наилучший способ выполнить блок кода на основе ввода пользователя, если он соответствует значению в массиве?
var cat = ['travel', 'business', 'environment', 'culture', 'football', 'politics', 'world', 'commentisfree', 'lifestyle', 'fashion', 'technology', 'sport', 'money', 'science'];
var userInput = $("#mySearch").val();
for(var i=0; i < cat.length; i++){
if (userInput == cat[i]){
// do something
}else{
// do something else
}
}
Это работало, однако условие еще было выполнено до тех пор, пока не найдено значение. Затем я попытался сбросить массив с ниже:
var userInput = $("#mySearch").val();
if (userInput == 'travel' || 'business' || 'environment' || 'culture' || 'football' || 'politics' || 'world' || 'commentisfree' || 'lifestyle' || 'fashion' || 'technology' || 'sport' || 'money' || 'science'){
// do something
}else{
// do something else
}
Таким образом, также работает, однако, это срабатывает для значений, которые не между условием скобки (не совсем уверен, почему ??). Объяснения и решения более чем приветствуются! Я новичок в JS
Try [.find()] (HTTPS: //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) или [.indexOf()] (https://developer.mozilla.org/nl/docs/Web/ JavaScript/Reference/Global_Objects/Array/indexOf) –
хорошо подумайте об этом, вы можете n ot запустить его в другом, так как он должен проверять каждую итерацию, если есть совпадение. Вы не знаете, нет ли совпадения, пока вы не перейдете все значения. Так что это значит? Вы будете запускать его только после того, как цикл закончится, и он ничего не нашел ... – epascarello