2012-11-27 1 views
6

Можно создать дубликат:
array.contains(obj) in JavaScriptJavascript, Самый быстрый способ узнать, есть ли определенное значение в массиве?

Скажем, у меня есть массив = [0,8,5]

Какой самый быстрый способ узнать, если 8 находится внутри этого один .. например:

if(array.contain(8)){ 
// return true 
} 

Я нашел это: Fastest way to check if a value exist in a list (Python)

и это: fastest way to detect if a value is in a set of values in Javascript

Но это не ответ на мой вопрос. Спасибо.

+4

http://stackoverflow.com/questions/237104/array-containsobj-in-javascript – zbrunson

+0

Ой .. спасибо! – Ydhem

+1

http://underscorejs.org/docs/underscore.html#section-21 – asawyer

ответ

8

Используйте indexOf(), чтобы проверить, является ли значение существует или не

array.indexOf(8) 

Пример кода,

var arr = [0,8,5]; 
alert(arr.indexOf(8))​; //returns key 

Update

Для поддержки IE

//IE support 
if (!Array.prototype.indexOf) { 
    Array.prototype.indexOf = function(obj, start) { 
     for (var i = (start || 0), j = this.length; i < j; i++) { 
      if (this[i] === obj) { return i; } 
     } 
     return -1; 
    } 
} 

var arr = [0,8,5]; 
alert(arr.indexOf(8)) 
+0

Это, конечно, предполагает, что вы не используете старый браузер. –

+1

'Array.indexOf' не работает в IE <9. –

+0

@RocketHazmat Я проверил IE 8, он работает для меня. http://jsfiddle.net/muthkum/LhvwV/1/ –

0

Вы можете использовать indexOf или вы можете попробовать это:

$.inArray(value, array) 
4

Вы можете использовать функцию IndexOf()

var fruits = ["a1", "a2", "a3", "a4"]; 
var a = fruits.indexOf("a3"); 

Выход будет: 2

+2

' Array.indexOf' не работает в IE <9. –

+1

См. этот ответ, т.е. <9 браузер http://stackoverflow.com/questions/1744310/how-to-fix-array -indexof-в-JavaScript-для-т-браузеров – Dineshkani

0

phpjs имеет in_array хороший РНР порт функции к javascript, вы можете использовать его

http://phpjs.org/functions/in_array/

смотри пример:

in_array('van', ['Kevin', 'van', 'Zonneveld']); 
Смежные вопросы