一、forEach
回調函數參數,item(數組元素)、index(序列)、arr(數組本身)
循環數組,無返回值,不改變原數組
不支持return操作輸出,return只用於控制循環是否跳出當前循環
二、includes
判斷數組是否包含某個元素,不用return,不用回調函數,返回布爾值
三、filter
使用return操作輸出,會循環數組每一項,並在回調函數中操作
返回滿足條件的元素組成的數組,不改變原數組
四、map
輸出的是return什么就輸出什么新數組
原數組被“映射”成對應新數組,返回新數組,不改變原數組
五、find
用來查找目標元素,找到就返回該元素,找不到返回undefined
輸出的是一旦判斷為true則跳出循環輸出符合條件的數組元素
六、some
返回布爾值,遇到滿足條件變跳出循環
七、every
返回布爾值,遇到不滿足條件跳出循環
八、reduce
累加器,輸出的是return疊加什么就輸出什么
回調函數參數四個
pre: 初始值(之后為上一操作的結果)
cur: 當前元素之
index: 當前索引
arr: 數組本身
主要有以下幾種用法:
1.數組求和
[1,2,3,4].reduce((pre, cur) => pre + cur)//10
2.二維數組轉為一維數組
[[1, 2], [3, 4], [5, 6]].reduce(( acc, cur ) => [...acc, ...cur], [])//[1, 2, 3, 4, 5, 6]
3.計算數組中每個元素出現的次數
const arraySum = (arr, val) => arr.reduce((acc, cur) => {
return cur == val ? acc + 1 : acc + 0
}, 0);
let arr = [1, 2, 3, 4, 5];
arraySum(arr, 0) //3
4.代替filter和map的組合
const characters = [
{ name: 'ironman', env: 'marvel' },
{ name: 'black_widow', env: 'marvel' },
{ name: 'wonder_woman', env: 'dc_comics' },
];
console.log(
characters
.filter(character => character.env === 'marvel')
.map(character => Object.assign({}, character, { alsoSeenIn: ['Avengers'] }))
);
// [
// { name: 'ironman', env: 'marvel', alsoSeenIn: ['Avengers'] },
// { name: 'black_widow', env: 'marvel', alsoSeenIn: ['Avengers'] }
// ]
console.log(
characters
.reduce((acc, character) => {
return character.env === 'marvel'
? acc.concat(Object.assign({}, character, { alsoSeenIn: ['Avengers'] }))
: acc;
}, [])
)
// [
// { name: 'ironman', env: 'marvel', alsoSeenIn: ['Avengers'] },
// { name: 'black_widow', env: 'marvel', alsoSeenIn: ['Avengers'] }
// ]
參考:
1.https://blog.csdn.net/kingan123/article/details/79818566
2.https://juejin.im/post/5b8d0a74f265da431d0e7ec0
3.https://www.cnblogs.com/cckui/p/9267542.html