我想要做的是输入一个值并检查数组中是否存在值,还是位于特定值之间 数组的值并获得较低的范围值索引
例如我有这个数组:
dataArr = [10, 20, 30, 50, 70, 80, 90, 100];
如果
input = 22;
该函数应该从dataArr返回值20和30的索引。
答案 0 :(得分:1)
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));
DEMO:http://jsbin.com/vakanu/1/
但数组应该排序
答案 1 :(得分:0)
您可以使用排序数组来实现它。下面的代码可以解决问题。
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);
}
}
}