функция JavaScript в массиве - PullRequest
11 голосов
/ 21 мая 2009

Мне нужна функция JavaScript, которая может принимать строку и массив и возвращать значение true, если эта строка находится в массиве

 function inArray(str, arr){
   ...
 }

Предостережение: он не может использовать какие-либо фреймворки JavaScript.

Ответы [ 5 ]

18 голосов
/ 21 мая 2009

Вы можете просто создать функцию-прототип массива 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.

8 голосов
/ 07 мая 2012

вы можете использовать arr.indexOf ()

http://www.w3schools.com/jsref/jsref_indexof_array.asp

8 голосов
/ 21 мая 2009

Как то так?

function in_array(needle, haystack)
{
    for(var key in haystack)
    {
        if(needle === haystack[key])
        {
            return true;
        }
    }

    return false;
}
1 голос
/ 21 мая 2009

Взгляните на этот связанный вопрос . Вот код ответа с наибольшим количеством голосов.

function contains(a, obj) {
  var i = a.length;
  while (i--) {
    if (a[i] === obj) {
      return true;
    }
  }
  return false;
}
0 голосов
/ 22 августа 2013

осторожно:

indexOf () использует частичные данные. если у вас есть «12», «1»

indexOf ('1') даст вам индекс '12', а не '1'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...