How about the following solution?
let missingArgument = {}; // or a symbol
function reduce(callback, initial = missingArgument){
let startIndex;
if (initial === missingArgument) {
initial = this[0];
startIndex = 1;
} else {
startIndex = 0;
}
...etc...
}
On Dec 24, 2012, at 3:32 , Allen Wirfs-Brock <[email protected]> wrote:
> On Dec 23, 2012, at 5:35 PM, Brandon Benvie wrote:
>
>> Here's one of the examples that was sticking out in my mind earlier that
>> Brendan's solution takes care of. Array.prototype.reduce requires that if
>> the initial value isn't provided then the first value of the array is the
>> initial value.
>>
>> Using rest:
>>
>> function reduce(callback, ...initial){
>> var current, index;
>>
>> if (initial.length) {
>> index = 0;
>> current = initial[0];
>> } else {
>> index = 1;
>> current = this[0];
>> }
>>
>> ...etc...
>> }
>>
>
> the way I would express this example is:
>
> function reduce(callback, ...rest){
> var current, index;
> if (rest.length > 0) {
> index = 0;
> current = rest[0];
> } else {
> index = 1;
> current = this[0];
> }
> ...etc...
> }
>
> which seems to exactly express the intent
--
Dr. Axel Rauschmayer
[email protected]
home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss