2016-09-28 3 views
-1

Я сохраняю пять значений в массиве, и мне нужно проверить, была ли переменная, которую я установил, равна одному из этих значений. Вот что я имею в виду:Как проверить, равна ли переменная одному из пяти значений массива

var x = e.clientX, // horizontal mouse position 
myArray = []; // I have another function that stores five values in this array 

if(x == /*one of the five array values*/){ 
    //do something 
} 

Благодаря ...

+0

Петля по массиву. – PHPglue

+0

Вам нужно знать конкретную позицию? – Li357

+0

@Andrew L Вы имеете в виду позицию значения, например 'myArray [0]', 'myArray [1]', 'myArray [2]'? В этом случае нет. Все, что мне нужно, это ценность. – thinoquinn

ответ

1

Вы можете использовать Array.prototype.includes, который проверяет, если массив содержит значение. Обратите внимание, что этот не поддерживается в Internet Explorer, вы можете найти полиполнение по указанной ссылке. За документации:

Array.prototype.includes

includes() метод определяет, содержит ли массив определенный элемент, возвращая истинным или ложным в зависимости от обстоятельств.

if(myArray.includes(x)) { 
    //x is in myArray 
} 

Если вы хотите позицию, вы можете использовать indexOf:

myArray.indexOf(x); 

Это будет искать элемент и возвращает позицию. Если не найден, он вернет -1. Это можно применить для работы с IE:

if(myArray.indexOf(x) > -1) { 
    //x is in myArray 
} 

Это гарантирует, что он существует, потому что он проверяет, превышает ли положение более -1.

+0

Нет поддержки в IE. – PHPglue

+0

@PHPglue Правильно, позвольте мне отредактировать соответствующим образом. – Li357

+0

Спасибо или ваша помощь! В моем коде я хочу определить _range_ значений, например: 'if (x - 50> = someVar && x + 50 <= someVar)'. Предположим, что 'someVar' является значением в' myArray', это: 'if (myArray.indexOf (x - 50)> -1 && myArray.indexOf (x + 50)> -1)' тот же, что и прежний оператор ? – thinoquinn

0

Используйте indexOf и проверьте, больше ли оно или равно нулю. indexOf возвращает индекс объекта в массиве, или -1, если его нет. Вы также можете использовать includes, но он пока не поддерживается полностью во всех браузерах. includes возвращает true, если значение присутствует в массиве.

var x = e.clientX, // horizontal mouse position 
myArray = []; // I have another function that stores five values in this array 
if(myArray.indexOf(x)>=0) { // one of the five array values 
    //do something 
} 
0
if (myArray.indexOf(x) > -1) 
{ 
// value exists - do something 
} 

myArray.indexOf (х) будет возвращать -1, если значение не существует в массиве. Он вернет индекс значения, если он существует в массиве.

Подробнее здесь: http://www.w3schools.com/jsref/jsref_indexof_array.asp

+0

W3Schools - не самая надежная документация – Li357

+0

@AndrewL. Будет ли [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) считать надежным? – DFriend

+0

@DFriend См. [Здесь] (http://meta.stackoverflow.com/q/280478/5647260) – Li357

0

Это скажет вам, если что-то в массиве, и это обратная совместимость.

function inArray(val, ary){ 
    for(var i=0,l=ary.length; i<l; i++){ 
    if(ary[i] === val){ 
     return true; 
    } 
    } 
    return false; 
} 
/* 
// use inArray 
if(inArray(yourValHere, yourArrayHere)){ 
    // it's in yourArrayHere so do stuff here 
} 
// use not inArray 
if(!inArray(yourValHere, yourArrayHere)){ 
    // it's not in yourArrayHere so do stuff here 
} 
*/ 
0

Это, как вы делаете это в ES6

var value = 5, 
    myArray = [1,2,3,4,5]; 
myArray.some(item => item === value); // <-- true 
Смежные вопросы