2 つ以上の引数を持つ min() 関数の JS で可能な最良のアルゴリズムは何ですか?
注: ">" または "<" 演算子と比較できるすべての JS タイプで機能するはずです。例えば:
min( new Date(1959,6,3), new Date(1960,7,8), new Date(1925,6,9));
/*
should return: Thu Jul 9 00:00:00 UTC+0200 1925
*/
したがって、Math.min と Math.max は適切な候補ではない可能性があります。
ありがとう ...
編集:私はこれらの線に沿って考えています:
"use strict" ;
var d1 = new Date(1959,6,3), d2 = new Date(1960,7,8), d3 = new Date(1925,6,9) ;
function min (a,b)
{
if ( arguments.length > 2 ) {
var args = Array.prototype.slice.call(arguments,0) ;
args.shift() ;
args[0] = min(a,b) ;
return min.apply( this, args ) ;
}
else {
return a > b ? b : a ;
}
}
min(d1,d2,d3);
/*
returns: Thu Jul 9 00:00:00 UTC+0200 1925
*/
上記は最適化できますが、2 つ以上の数値と文字列に対しても機能します。もちろん、JS 組み込みのコンパレータ規則の内部。