JavaScript 配列から指定した値の近似値を取得


速度とか気にせず、シンプルにわかる安く取得する方法としてメモしておきます。
海外のどこかのサイトに書いてあったコードです

closest.js

function getClosestNum(num, ar){
   //近似値を保持しておく変数
   var closest;
   //配列かどうか、要素があるか判定
   if(Object.prototype.toString.call(ar) ==='[object Array]' && ar.length>0){
     //まず配列の最初の要素を近似値として保持する
     closest = ar[0];
     //配列の要素を順次比較していく
     for(var i=0;i<ar.length;i++){ 
        //この時点での近似値と、指定値の差異を絶対値で保持しておく
        var closestDiff = Math.abs(num - closest);
        //読み込んだ値と比較し、差異を絶対値で保持しておく
        var currentDiff = Math.abs(num - ar[i]);
        //新しく比較した値のほうが近かったら、近似値として保持しておく
        if(currentDiff < closestDiff){
            closest = ar[i];
        }
      }
     //ループが終わったら、近似値を返す
      return closest;
    }
 //配列じゃなかったらfalse
 return false;
}