前言:關於 JS 中爲數組定義的迭代方法,我最開始是在《JavaScript高級程序設計》中學習的,而後。。。我並無看懂,後來翻閱各個大佬的博客,稍微理解了那麼一丟丟。如下就是個人一點看法。數組
首先,咱們須要知道數組中的迭代方法都有哪些,列舉出來分別是:every、some、filter、map、forEach、reduce。函數
其中 every、some、filter、map、forEach 五種方法在傳入時函數會接受三種參數,分別是 item(數組中項的值)、index(項的索引)、array(數組自身)。我在下面的案例中都只傳入了兩個值,緣由是。。。用不到(實際上是懶得寫) 學習
而 reduce 方法則會接受四個參數,分別是 prev(前一個項)、cur(當前項)、index(項的索引)、array(數組對象),函數中返回的任何值都會做爲第一個參數傳給下一項,函數的迭代是在數組的第二項開始的。spa
var num = [1,2,3,4,5]; var number = num.every(function(item,index){ return (item > 3); //判斷傳入的值是否所有都大於3
}) console.log(number); //false 有一個不知足即爲false
var num = [1,2,3,4,5]; var number = num.some(function(item,index){ return (item > 3); //判斷傳入的值哪些項大於3
}) console.log(number); //true 知足一個便可爲true
var num = [1,2,3,4,5]; var number = num.filter(function(item,index){ return (item > 3); //判斷傳入的值哪些項大於3
}) console.log(number); //[4,5]
var num = [1,2,3,4,5]; var number = num.map(function(item,index){ return item * 3; //傳入的數值都乘以3
}) console.log(number); //[3,6,9,12,15]
var num = [1,2,3,4,5]; var number = num.forEach(function(item,index){ console.log(item); // 1 2 3 4 5
})
關於 forEach 我再多叨叨幾句,這個方法在本質上與 for 循環沒有什麼區別。上面提到過,每一個方法都會傳入三個參數,那麼我在輸出時傳入第一項,也就是輸出數組中的每一項。若是傳入第二項,則是循環迭代數組的 index 下標值,若是傳入第三項,則是循環迭代整個 num 數組。設計
var num = [1,2,3,4,5]; var number = num.reduce(function(prev,cur,index){ return prev + cur; }) console.log(number); // 1+2+3+4+5 = 15 本質上就是數組中的項 累計運算的過程