ES6高阶函数(filter/map/reduce)

ES6语法
js判断字符串是否包含在另一个字符串中
1、旧的方式: indexOf('变量') ----> 结果为-1 代表未找到,否则就是找到了 返回下标
2、es6新增3种方式: 返回 true或false
1、includes('变量',搜索的位置) 表示是否找到参数变量
2、startsWith('变量',搜索的位置) 从头部匹配
3、endsWith('变量',搜索的位置) 从尾部匹配

str.repeat(n) 表示将源字符串重复n次
‘hello’.repeat(3) ---> 'hellohellohello'
参数如果是小数,会被取整
参数如果是负数或者infinity,会报错

str.padStart(最小长度,补全的字符串) 表示头部补全最小长度的字符串
str.padEnd(最小长度,补全的字符串) 表示尾部补全最小长度的字符串
示例:‘920312’.padEnd(10,'0') ---> '9203120000' tip:必须是字符串

 

函数、

//1、需求:筛选出数组中数字小于100的数字。
//2、需求:将数组中的每个数字乘以3.
//3、需求:数组中的数组汇总求和。
let nums = [16,38,49,88,291,32,231,123,101,22]
//旧的写法:
    let old_newnums = []    //[16, 38, 49, 88, 32, 22]
    //1、
        for (let i = 0; i < nums.length; i++) {
            if (nums[i]<100) {old_newnums.push(nums[i])}
        }
    //2、
    let old_newnums1 = []    //[48, 114, 147, 264, 96, 66]
        for (let i = 0; i < old_newnums.length; i++) {
            old_newnums1.push(old_newnums[i]*3)
        }
    //3、
    let old_newnums2 = 0    // 735
        for (let i = 0; i < old_newnums1.length; i++) {
            old_newnums2 += old_newnums1[i]
        }

//新的写法: filter / map / reduce
    // filter中的回调函数有一个要求:必须返回一个bollean值
        // true : 当返回true时,函数内部会自动将这次回调的n加入到新的数组中
        // false: 当返回fasle时,函数内部会过滤掉这次的n。
        let new_nums = nums.filter(function (n) {
            return n < 100
        })

    // map 映射函数
        let new_nums1 = new_nums.map(function (n) {
            return n * 3
        })

    // reduce(func(上一次结果 初始值为默认值,数组的n),默认值=0) 对数组中所有的内容进行汇总。
        let new_nums2 = new_nums1.reduce(function (prev,n){
            return prev + n
        },0)

//或者可以写成
    let new_writeNums = nums.filter(function (n){return n < 100}).map(function(n){return n * 3}).reduce(function(prev,n){return prev + n},0)
posted @ 2020-01-06 16:27  xiaomogugu  阅读(1898)  评论(0编辑  收藏  举报