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