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