JavaScript编程题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript编程题相关的知识,希望对你有一定的参考价值。

技术分享

来自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编程题的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 设置代码提示或自动补全的快捷键

IntelliJ IDEA 设置代码提示或自动补全的快捷键

怎样用Sublime Text补全HTML基本结构,并附补全的代码,方便以后直接复制粘帖使用

怎样用Sublime Text补全HTML基本结构,并附补全的代码,方便以后直接复制粘帖使用

IntelliJ IDEA 设置代码提示或自动补全的快捷键 (附IntelliJ IDEA常用快捷键)

linux下让irb实现代码自己主动补全的功能