Проверить, существует ли значение или лежит между определенными значениями в массиве

То, что я хочу сделать, это ввести значение и проверить, существуют ли значения в массиве или лежат между определенными значениями массива и получить более низкий индекс значения диапазона

Например, у меня есть этот массив:

dataArr = [10, 20, 30, 50, 70, 80, 90, 100];

если

input = 22;

функция должна возвращать индекс значений 20 и 30 из dataArr.

2 ответа

Решение
var dataArr = [10, 20, 30, 50, 70, 80, 90, 100];

function _find(array, search) {
  var indexes = [],
      len = array.length,
      i,
      index = array.indexOf(search);

  if (~index) {
    return index;
  }

  if (search < array[0]) {
    return -1;  
  }

  for (i = 1; i < len; i++) {
    if (array[i] >= search) {
      return [i - 1, i];
    }    
  }

  return -1;
}


console.log(_find(dataArr, 22));

ДЕМО: http://jsbin.com/vakanu/1/edit?js,console

Но массив должен быть отсортирован

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

 var inputVal = 22
 dataArr = sortThisArray(dataArr); //IF needed
 for (var i=0; i<dataArr.size(); i++)
 {
      if(dataArr[i] > inputVal) //Check if the array value is greater than input value
      {
          if(i < (dataArr.size()-1))
          {
               alert("Range is" + i +"and its last element in array so higher index");
          }
          else //we can find the LOWER BOUND index as i and HIGHER BOUND index as i+1
          {
              alert("Range are" + i +"and"+ i+1);
          }
      }
 }
Другие вопросы по тегам