码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript编程题

时间:2016-04-02 17:29:59      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

来自ManfredHu博客: http://www.manfredhu.com/2016/04/02/15-veryGoodForUsing/

1. 用reduce统计一个数组中有多少个不重复的单词

var arr = ["apple","orange","apple","orange","pear","orange"];

function getWordCnt(){
  return arr.reduce(function(prev,next,index,arr){
    prev[next] = (prev[next] + 1) || 1; //这句是重点
    return prev;
  },{});
}

console.log(getWordCnt());

2.给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false

function containsRepeatingLetter(str) {
     return /([a-zA-Z])\1/.test(str); // \1指代第一个括号的匹配项
}

在正则表达式中,利用()进行分组,使用斜杠加数字表示引用,\1就是引用第一个分组,\2就是引用第二个分组。将[a-zA-Z]做为一个分组,然后引用,就可以判断是否有连续重复的字母。

3.已知fn为一个预定义函数,实现函数curryIt

需要补全的代码

var fn = function(a, b, c) {
    return a + b + c
};
curryIt(fn)(1)(2)(3); //6

function curryIt(fn) {
    //这里补充
}

可以试着玩一下,这里是用的函数的柯里化

var fn = function(a, b, c) {
    return a + b + c
};
console.log(curryIt(fn)(1)(2)(3)); //6

function curryIt(fn) {
    var len = fn.length; //获取函数形参数量
    var slice = Array.prototype.slice;
    var arg = slice.call(arguments, 1);
    return function() {
        arg = arg.concat(slice.call(arguments));
        if(arg.length < len) { //当等于函数需要的形参数量时候调用
            return arguments.callee;
        }else{
            return fn.apply(null,arg);
        }
    }
}

JavaScript编程题

标签:

原文地址:http://www.cnblogs.com/manfredHu/p/5347719.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!