天天看點

數組高階函數的應用

1.forEach()

用法:array.forEach(function(item,index){})

沒有傳回值,隻是單純的周遊

2.map()

用法:array.map(function(item,index){})

周遊并對其進行操作,傳回新數組,原數組不變

3.filter()

用法:array.filter(function(item,index){})

篩選符合條件的元素并傳回新數組,原數組不變

4.find()

用法:array.find(function(item,index){})

傳回符合條件的第一個元素,原數組不變

5.every()

用法:array.every(function(item,index){})

檢測是否所有元素都符合條件,傳回true或false

6.some()

用法:array.some(function(item,index){})

檢測數組中是否有滿足條件的元素,傳回true或false

7.reduce()

用法:array.reduce((sum, item) => […sum, …item.data], [])

參數一:回調函數

參數一:累加的值

參數二:每一項的值

參數三:下标

參數四:數組

參數二:初始值

// item.data 不是數組 就不用加…

reduce常用的示例:

1.累加

const arr = [1,2,3,4,5];
    const arrSum = arr.reduce((sum, item) => sum + item, 0);
    console.log(arrSum); // console 15
           

2.二維資料結構變成一維數組

const arr = [
        {
            groupName: 'A',
            groupData: ['阿裡巴巴', '阿根廷']
        },
        {
            groupName: 'B',
            groupData: ['百度', '柏林']
        },
        {
            groupName: 'T',
            groupData: ['騰訊', '天津']
        },
    ];
    const arrSum = arr.reduce((sum, item) => [...sum, ...item.groupData], []);
    console.log(arrSum); // ["阿裡巴巴", "阿根廷", "百度", "柏林", "騰訊", "天津"]
           

3. 檢測對象在數組中的下标

const arr = [{id: 1}, {id: 2}];
    const i = arr.reduce((pre, item, i) => item.id === 3 ? i : pre, -1);
    console.log(i);
           

4. 标出一個數組是否包含另一個數組的元素

const arr = [{id: 1, name: '小王'}, {id: 2, name: '小李'}, {id: 3, name: '小周'}, {id: 4, name: '小紅'}];
    const isImportant = [1, 3];
    const users = arr.filter(n => isImportant.find(p => n.id === p));
    console.log(users); // [{id: 1, name: '小王'}, {id: 3, name: '小周'}]
           

5. more...