Проверить, существует ли значение или лежит между определенными значениями в массиве
То, что я хочу сделать, это ввести значение и проверить, существуют ли значения в массиве или лежат между определенными значениями массива и получить более низкий индекс значения диапазона
Например, у меня есть этот массив:
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);
}
}
}