Throwing StopIteration in array extras to stop the iteration

Rick Waldron waldron.rick at gmail.com
Sun Mar 3 17:25:57 PST 2013


On Sun, Mar 3, 2013 at 5:33 PM, Brendan Eich <brendan at mozilla.com> wrote:

> Bjoern Hoehrmann wrote:
>
>> * David Bruant wrote:
>>
>>> I've found myself multiple times in a situation where I needed the index
>>> of the first element responding to some conditions. I solved it the
>>> following way:
>>>
>>>      var index;
>>>      array.some(function(e, i){
>>>          if(someCondition(e)){
>>>              index = i;
>>>              return false;
>>>          }
>>>
>>>          return true;
>>>      })
>>>
>>
>> It's usually a bad idea to trigger side-effects from such callbacks. The
>> proper solution here would be having a suitable method available, like
>>
>>    var index = array.findIndex(someCondition)**;
>>
>> as it is called in Haskell and C#.
>>
>
> Hi Bjoern, findIndex is indeed a missing Array generic. I'll see if we can
> get it on the agenda for the next TC39 meeting (coming up quickly,
> mid-March). Thanks,
>

Despite my previous message with a solution that relied on
array.reduce(...), the benefit of stopping the iteration (once the
predicate returns true) is objectively compelling.

Rick


>
> /be
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130303/0d94b632/attachment.html>


More information about the es-discuss mailing list