2016-04-09 52 views
0

嗨我試圖檢查一個值是匹配的動態數組中的一些範圍。我有一個數量例如說3555, 我有一個陣列[1000,2000,999999]。通常情況下,我們可以使用if語句來檢查的動態範圍一樣,如何檢查JavaScript中的動態數組範圍?

if(3555<100) 
{ 
    //do something 
} 
elseif(3555<2000) 
{ 
    //do something 
} 
elseif(3555<999999) 
{ 
    //do something 
} 

條件,我需要實現的是,靜態量(3555)更大一些比一些價值值少,更具體 像Amount <1000>2000 現在我有一個動態數組作爲input.How我可以檢查條件是真的並獲得數組索引?有人能幫我嗎?

回答

2

沒有必要爲這樣的事情jQuery, 一個簡單的方法來獲得你想要的是運行你測試範圍數組的每個夫婦價值,如果有東西匹配返回索引。

function test(number, ranges) { 
 
    for (var i = 0; i < ranges.length; ++i) { 
 
    if (number < ranges[i]) { 
 
     return i; 
 
    } 
 
    } 
 
} 
 

 

 
var ranges = [1000, 2000, 999999]; 
 

 
console.log(test(3555, ranges));

+0

指數是最後一個999999?如何做到這一點?@ user3 – Anu

+0

返回'i + 1'而不是'i',我假設你想要下界的索引;)@Anu – user3

+0

工作原理:)@ user3 – Anu

1

也許這一個?

getIndex = function(array, amount) { 
for(var i in array.sort()) { 
    if(array[i] > amount) { 
     return i; 
    } 
    } 
    return -1; 
}; 

這將超過量數字越大,回報指數

小提琴:https://jsfiddle.net/diegopolido/6wuutsk6/

+0

如果3555是它應該輸入的數量滿足99999,因爲它的值是3000以上。你能幫我嗎?@Diego Polido桑塔納 – Anu

+0

該功能將返回2(索引999999)。看小提琴 –

1

你可以遍歷數組,像這樣(其中num是大於該值將返回第一個索引在陣列中或-1,如果沒有被發現)

function amount(array, num) { 
    array.forEach(function(val, index){ 
     if (val < num) { 
      return index; 
     } 
    }); 
    return -1; 
} 
0

您可以使用filter功能:

應該匹配

var arr = [100, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 999999]; 
 
var min = 1000; 
 
var max = 4010; 
 

 
var resultingArray = arr.filter(function(val, index, ar) { 
 
    return val < max && val > min; 
 
}); 
 

 
document.write('Result is: ' + resultingArray);

0
var theArray = [100,300,800,1000,1300]; 
var goal = 400; 
var nearest= null; 
$.each(theArray, function(){ 
    if (nearest == null || Math.abs(this - goal) < Math.abs(nearest - goal){ 
     nearest = this; 
    } 
});