Array.prototype.max and Array.prototype.min

Xavier MONTILLET xavierm02.net at gmail.com
Mon Feb 20 11:32:06 PST 2012


Because I'm not talking of arrays containing only numbers.

On Mon, Feb 20, 2012 at 8:29 PM, Rick Waldron <waldron.rick at gmail.com> 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 <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
>
>


More information about the es-discuss mailing list