How to move to prev/next element of an array

<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.

 

StackOverflow

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>