js相关题解

斐波那契数列

     function fibonacci(n) {
    if(n<=2){
        return 1
    }else{
        return fibonacci(n-1)+fibonacci(n-2)
    }
}

使用递归实现

邮箱验证

通过正则表达式

function isAvailableEmail(sEmail) {
    let reg=/^\w+@[\da-z\.-]+\.([a-z]+|[\u4E00-\u9FFF]+)$/
    return reg.test(sEmail);
}

1、^\w + : ^ 代表以后面的开头
\w代表数字+字母+下划线
+ 代表匹配前面的表达式一次或多次 2、[ \da-z.-]+ : [ ] 代表中括号表达式的开始
\d 代表[0-9]的数字,取其一
a-z 代表小写字母,取其一
. 代表匹配 .
- 代表匹配 – 3、([a-z]+|[\u4E00-\u9FFF ]+)$: ()代表子表达的开始
| 代表任选其一
\u 代表Unicode编码
4E00-9FFF为中文字符编码区
$ 代表以前面的表达式结束

计时器

实现一个打点计时器,要求
1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
3、第一个数需要立即输出

 function count(start, end) {
    console.log(start++)
    let timer = setInterval(function () {
        if (start <= end) {
            console.log(start++)
        } else {
            clearInterval(timer)
        }
    }, 100)
    return {
        cancel: function () {
            clearInterval(timer)
        }
    }
}

函数传参

将数组 arr 中的元素作为调用函数 fn 的参数
方法一:使用apple(此题建议使用方法一)

function argsAsArray(fn, arr) {
    return fn.apply(this,arr)
}

方法二:使用call

function argsAsArray(fn, arr) {
    return fn.call(this,arr[0],arr[1],arr[2])
}

函数的上下文

方法一:直接将fn挂载到obj对象上

function speak(fn, obj) {
    obj.fn = fn
    return obj.fn()
}

方法二:使用apply

function speak(fn, obj) {
    return fn.apply(obj)
}

方法三:使用call

function speak(fn, obj) {
    return fn.call(obj)
}

方法四:使用bind

function speak(fn, obj) {
    return fn.bind(obj)()
}

返回函数

实现函数 functionFunction,调用之后满足如下条件:
1、返回值为一个函数 f
2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ', ’
3、所有函数的参数数量为 1,且均为 String 类型

function functionFunction(str) {
    return f = function(arr){
        return str+", "+arr;
    };
     
}

使用 arguments

函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。

function useArguments() {
    return [...arguments].reduce((a,b)=>a+b)
}

批量改变对象的属性

给定一个构造函数 constructor,请完成 alterObjects 方法,将 constructor 的所有实例的 greeting 属性指向给定的 greeting 变量。

function alterObjects(constructor, greeting) {
constructor.prototype.greeting = greeting
}

判断是否包含数字

给定字符串 str,检查其是否包含数字,包含返回 true,否则返回 false

   function containsNumber(str) {
  for(let i=0;i<10;i++) {
        if(str.indexOf(i)!==-1) return true
    }
    return false
}

判断是否符合指定格式

给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型

        function matchesPattern(str) {
  return /^\d{3}-\d{3}-\d{4}$/.test(str)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值