Why add new api surface when this works as is: Math.max.apply( null, [ 1, 2, 3, 4 ] ); // 4
Math.min.apply( null, [ 1, 2, 3, 4 ] ); // 1 On Mon, Feb 20, 2012 at 2:25 PM, Xavier MONTILLET <[email protected]>wrote: > Hi, > > I think it'd be nice to have Array.prototype.max and Array.prototype.min. > > What they would do is this: > > Array.prototype.max = function ( f ) { > return this.sort( f )[ this.length - 1 ]; > }; > Array.prototype.min = function ( f ) { > return this.sort( f )[ 0 ]; > }; > > Of course, that's not how they would actually be implemented (sorting > the whole array to get the max/minimum is ridiculous) but I wrote them > that way so that we clearly see the behavior when a function is given > as argument: just as with Array.prototype.sort, the function is used > instead of < in the comparisons. > > Here is a more efficient implementation: > > Array.prototype.max = function ( f ) { > var max = this[ 0 ]; > var i; > var l = this.length; > var item; > if ( f ) { > for ( i = 1; i < l; ++i ) { > item = this[ i ]; > if ( item > max ) { > max = item; > } > } > } else { > for ( i = 1; i < l; ++i ) { > item = this[ i ]; > if ( f( item, max ) === 1 ) {// maybe it should be -1... I > never remember... > max = item; > } > } > } > return max; > }; > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

