<span class="kwd">var</span><span class="pln"> iterifyArr </span><span class="pun">=</span> <span class="kwd">function</span> <span class="pun">(</span><span class="pln">arr</span><span class="pun">)</span> <span class="pun">{</span> <span class="kwd">var</span><span class="pln"> cur </span><span class="pun">=</span> <span class="lit">0</span><span class="pun">;</span><span class="pln"> arr</span><span class="pun">.</span><span class="kwd">next</span> <span class="pun">=</span> <span class="pun">(</span><span class="kwd">function</span> <span class="pun">()</span> <span class="pun">{</span> <span class="kwd">return</span> <span class="pun">(++</span><span class="pln">cur </span><span class="pun">>=</span> <span class="kwd">this</span><span class="pun">.</span><span class="pln">length</span><span class="pun">)</span> <span class="pun">?</span> <span class="kwd">false</span> <span class="pun">:</span> <span class="kwd">this</span><span class="pun">[</span><span class="pln">cur</span><span class="pun">];</span> <span class="pun">});</span><span class="pln"> arr</span><span class="pun">.</span><span class="pln">prev </span><span class="pun">=</span> <span class="pun">(</span><span class="kwd">function</span> <span class="pun">()</span> <span class="pun">{</span> <span class="kwd">return</span> <span class="pun">(--</span><span class="pln">cur </span><span class="pun"><</span> <span class="lit">0</span><span class="pun">)</span> <span class="pun">?</span> <span class="kwd">false</span> <span class="pun">:</span> <span class="kwd">this</span><span class="pun">[</span><span class="pln">cur</span><span class="pun">];</span> <span class="pun">});</span> <span class="kwd">return</span><span class="pln"> arr</span><span class="pun">;</span> <span class="pun">};</span> <span class="kwd">var</span><span class="pln"> fibonacci </span><span class="pun">=</span> <span class="pun">[</span><span class="lit">1</span><span class="pun">,</span> <span class="lit">1</span><span class="pun">,</span> <span class="lit">2</span><span class="pun">,</span> <span class="lit">3</span><span class="pun">,</span> <span class="lit">5</span><span class="pun">,</span> <span class="lit">8</span><span class="pun">,</span> <span class="lit">13</span><span class="pun">];</span><span class="pln"> iterifyArr</span><span class="pun">(</span><span class="pln">fibonacci</span><span class="pun">);</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="pln">prev</span><span class="pun">();</span> <span class="com">// returns false</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 1</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 1</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 2</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 3</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 5</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 8</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="pln">prev</span><span class="pun">();</span> <span class="com">// returns 5</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 8</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns 13</span><span class="pln"> fibonacci</span><span class="pun">.</span><span class="kwd">next</span><span class="pun">();</span> <span class="com">// returns false</span>
Javascript: Array.prototype.findIndex()
The
<strong><span style="color: #333333;">findIndex()</span></strong>
method returns the index of the first element in the array that satisfies the provided testing function. Otherwise, it returns -1, indicating no element passed the test.
Given:
<span class="kwd">var</span><span class="pln"> peoples </span><span class="pun">=</span> <span class="pun">[</span> <span class="pun">{</span> <span class="str">"attr1"</span><span class="pun">:</span> <span class="str">"bob"</span><span class="pun">,</span> <span class="str">"attr2"</span><span class="pun">:</span> <span class="str">"pizza"</span> <span class="pun">},</span> <span class="pun">{</span> <span class="str">"attr1"</span><span class="pun">:</span> <span class="str">"john"</span><span class="pun">,</span> <span class="str">"attr2"</span><span class="pun">:</span> <span class="str">"sushi"</span> <span class="pun">},</span> <span class="pun">{</span> <span class="str">"attr1"</span><span class="pun">:</span> <span class="str">"larry"</span><span class="pun">,</span> <span class="str">"attr2"</span><span class="pun">:</span> <span class="str">"hummus"</span> <span class="pun">}</span> <span class="pun">];</span>
.. There’s now a great way of doing this called
findIndex
which takes a function that return<span style="color: #242729;">true</span>
/<span style="color: #242729;">false</span>
based on whether the array element matches (as always, check for browser compatibility though).<span class="kwd">var</span><span class="pln"> index </span><span class="pun">=</span><span class="pln"> peoples</span><span class="pun">.</span><span class="pln">findIndex</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">person</span><span class="pun">)</span> <span class="pun">{</span> <span class="kwd">return</span><span class="pln"> person</span><span class="pun">.</span><span class="pln">attr1 </span><span class="pun">==</span> <span class="str">"john"</span> <span class="pun">}</span>
With ES6 syntax you get to write this:
<span class="kwd">var</span><span class="pln"> index </span><span class="pun">=</span><span class="pln"> peoples</span><span class="pun">.</span><span class="pln">findIndex</span><span class="pun">(</span><span class="pln">p </span><span class="pun">=></span><span class="pln"> p</span><span class="pun">.</span><span class="pln">attr1 </span><span class="pun">==</span> <span class="str">"john"</span><span class="pun">)</span>
Code Review Stack Exchange
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. Join them; it only takes a minute:
Cypress: Selenium Testing for Javascript
A complete end-to-end testing experience.
The web has evolved.
Finally, testing has too.
Fast, easy and reliable testing for anything that runs in a browser.