zoukankan      html  css  js  c++  java
  • js函数式编程(高阶函数)

    完成几个数组高阶函数的练习,包括map every some reduce 然后具体代码如下

    这个是reduce的代码;具体作用是统计一个字符串数组中每个字符出现的次数;

    function countWords(arr){
        return arr.reduce(function(prev,next){
            prev[next] = (prev[next] + 1) || 1;  //理解这里关键,值得注意的是prev[next]
            return prev;
        },{});
    }
    module.exports=countWords;
    

    重点解释一下第三行* prev[next] = (prev[next] + 1) || 1 * 一开始实在不理解这是什么鬼? 比如有这样一个字符数组[a,s,a,d,a,d,d,w]

    注意最后,传递了一个空对象{}作为init 这就是最初的空对象 然后可以看到的是 prev[next] prev访问next属性也即是第一个元素a 然后再看等号右边,prev[next]+1这个值是等于NAN的 所以1 ,再看第三个元素a 这个原来已经有一个a对象了 ,所以prev[next]的值是可以取到了 就在原来基础之上+1;

    想想第一个next 是 a; 然后将a赋值为1;第二个元素为s 将s赋值为1 ;第三个元素为a,对象里面已经有a属性了 ,所以a属性值+1,多多理解!!!


    这个是everysome 的代码;具体是比对一个对象是否是一个对象的子集

    function checkUsersValid(goodUsers) {
        return function allUsersValid(submittedUsers) {
                var validArr=goodUsers.map(function(item){
                    return item.id;
                });
          return   submittedUsers.every(function(index){
          return   validArr.some(function(item){
                 return item==index.id;
             })
            })
        };
    }
    module.exports = checkUsersValid;
    

    这个代码比较好理解,那我就不解释了哈


    再看一个filter的;具体是一个过滤一个对象数组,然后找出message长度大于50的

    module.exprots=function getShortMessages(obj){
        return obj.filter(function(index){
            return index.messages.length<50
        }).map(function(index){
           return index.messages
        })
    };
    

    input:[{meaasges:"qwsdqwwfr"},{meaasges:"qwfgsdfgr"},{meaasges:"fqsdfnr"},{meaasgesz:"ioujqsdfr"}]
    解释下为什么要先filter, 先filter之后得到还是对象数组再map之后就得到message数组了

  • 相关阅读:
    线上问题随笔记录数据库连接池问题
    MySQL索引类型总结和使用技巧以及注意事项
    elastic-job的原理简介和使用
    新生 & 语不惊人死不休 —— 《无限恐怖》读后有感
    USACO Section2.1 Hamming Codes 解题报告 【icedream61】
    USACO Section2.1 Healthy Holsteins 解题报告 【icedream61】
    USACO Section2.1 Sorting a Three-Valued Sequence 解题报告
    USACO Section2.1 Ordered Fractions 解题报告
    USACO Section2.1 The Castle 解题报告
    USACO Section1.5 Superprime Rib 解题报告
  • 原文地址:https://www.cnblogs.com/liuestc/p/5252412.html
Copyright © 2011-2022 走看看