2016-08-22 5 views
-2

私は数値と値の配列を持っています。私は値の周りの数字を探したいと思います。最も重要なのは最も高い値ですが、私は両方が必要です。配列の中で次に高い数字を見つける

var array = [2,4,5,8,11]; 
var value = 9; 

私は必要な結果は次のようになります。8および11

私はそれをどのように行うことができますか?

ありがとうございました。

+2

インターネットには、このような問題の解決策があふれています。 –

+0

これはjQueryの質問です。 –

+0

私は自分の問題に対する解決策を見つけられなかったので、私はそれを求めます。配列内のデータが常に1ずつ増加するときに私はそれを行いました。しかし、私の質問では解決策は見つかりませんでした。 jQueryでこれをやろうとしています。 – PSport

答えて

2

このヘルプあなたは:あなたはまだ私はあなたがここで良いアドバイスを得ると確信していjquery.Howeverを学んでいるようにあなたの質問を見てみると

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 
    <script> 
 
     
 
     var array = [2,4,5,8,11]; 
 
     
 
     var value = 9; 
 
     
 
     var min,max; 
 
     
 
     fun(); 
 
     
 
     function fun() { 
 
      
 
      var sortArray = array.sort(function(a,b){return a-b}); 
 
      
 
      for(var i=0; i<sortArray.length;i++) { 
 
       
 
       if (sortArray[i] < value) 
 
        min = sortArray[i]; 
 
       
 
       if (sortArray[i] > value) 
 
        max = sortArray[i]; 
 
      } 
 
      
 
      alert(min + " , " + max); 
 
     } 
 
     
 
    </script> 
 
</body> 
 
</html>

+0

私は感謝しました。私はそれを使用して、私の必要性に完全に適応させることができます。 – PSport

4

それぞれの値を簡単にfor-loopで検索するだけです。

ですから、例えば:

function findNumbers(arr, num){ 
    var low = num + 1; //largest number lower than num, set initial value above num 
    var high = num - 1; //smallest number higher than num, set initial value below num 
    for(var i = 0; i < arr.length; i ++){ 
     if(arr[i] > low && arr[i] < num){ 
      low = arr[i]; 
     } 
     if(arr[i] < high && arr[i] > num){ 
      high = arr[i]; 
     } 
    } 

    //optional check to see if low/high exists 
    if(low > num){ 
     low = -1; //not found 
    } 
    if(high < num){ 
     high = -1; //not found 
    } 
    return [low,high]; 

} 

、そこに行きます。これはarrがソートされているかどうかに関係なく動作します。

+0

ありがとう、理解された! – PSport

1

が見えます。

ここでは、テストケースの例を示します。私はあなたに説明を残して、各行を学習して学ぶことができます。

var myArray = [2, 4, 5, 8, 11]; 
var myValue = 9; 

function BiggerThan(inArray) { 
    return inArray > myValue; 
} 

function LesserThan(inArray) { 
    return inArray < myValue; 
}  

var arrBiggerElements = myArray.filter(BiggerThan); 
var nextElement = Math.min.apply(null, arrBiggerElements); 
alert(nextElement); 

var arrLesserElements = myArray.filter(LesserThan); 
var prevElement = Math.max.apply(null, arrLesserElements); 
alert(prevElement); 
+0

ありがとう、私はそれを分析するつもりです。 – PSport

関連する問題