Ответ 1
вы можете использовать arr.indexOf()
Мне нужна функция javascript, которая может принимать строку и массив, и возвращает true, если эта строка находится в массиве.
function inArray(str, arr){
...
}
caveat: он не может использовать фреймворки javascript.
вы можете использовать arr.indexOf()
Вы можете просто создать функцию прототипа массива ala:
Array.prototype.hasValue = function(value) {
var i;
for (i=0; i<this.length; i++) { if (this[i] === value) return true; }
return false;
}
if (['test'].hasValue('test')) alert('Yay!');
Обратите внимание на использование '===' вместо '==', которое вы могли бы изменить, если вам нужно меньше определенного соответствия... В противном случае [3].hasValue('3') вернет false.
Что-то вроде этого?
function in_array(needle, haystack)
{
for(var key in haystack)
{
if(needle === haystack[key])
{
return true;
}
}
return false;
}
Посмотрите этот связанный вопрос. Вот код из голосующего ответа.
function contains(a, obj) {
var i = a.length;
while (i--) {
if (a[i] === obj) {
return true;
}
}
return false;
}
осторожно:
indexOf() использует частичные данные. если у вас есть "12", "1"
indexOf ('1') предоставит вам индекс "12", а не "1"