我想知道对于具有两个或多个参数的 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 内在比较器规则中。