關於JS陣列中every與some兩者迭代方法探索
阿新 • • 發佈:2019-01-06
every()與some()方法都是JS中陣列的迭代方法。every()是對陣列中的每一項執行給定函式,如果該函式對每一項返回true,則返回true。some()是對陣列中每一項執行指定函式,如果該函式對任一項返回true,則返回true。
我其實在看完這兩個函式的介紹時,心裡就在想,這兩個會不會像邏輯運算子||和&&一樣是短路操作?
執行如下程式碼便知分曉:
<span style="font-family:Courier New;font-size:14px;"><script type="text/javascript"> var arr = [ 1, 2, 3, 4, 5, 6 ]; console.log( arr.some( function( item, index, array ){ console.log( 'item=' + item + ',index='+index+',array='+array ); return item > 3; })); console.log( arr.every( function( item, index, array ){ console.log( 'item=' + item + ',index='+index+',array='+array ); return item > 3; })); </script></span>
執行結果如下:
可以看到,some方法是碰到一個返回true的值時候就返回了,並沒有繼續往下執行,而every也一樣,第一個值就是一個false,所以後面也沒有進行下去的必要了,就直接返回結果了。