天天看点

数组高阶函数的应用

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