Array.prototype.max and Array.prototype.min

Rick Waldron waldron.rick at gmail.com
Mon Feb 20 11:29:28 PST 2012


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
<xavierm02.net at gmail.com>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
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20120220/099121eb/attachment.html>


More information about the es-discuss mailing list