Because I'm not talking of arrays containing only numbers.
On Mon, Feb 20, 2012 at 8:29 PM, Rick Waldron <[email protected]> wrote: > 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

