前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛客网js题库正解(41-60)

牛客网js题库正解(41-60)

作者头像
编程内马尔
发布2022-11-15 14:46:23
2880
发布2022-11-15 14:46:23
举报
41、dom 节点查找
function commonParentNode(oNode1, oNode2) {
    for(;oNode1;oNode1 = oNode1.parentNode) {
        console.log(oNode1)
        if (oNode1.contains(oNode2)) {
            return oNode1
        }
    }
}
42、41直接跳到43,没有42题
43、修改this指向
function bindThis(f, oTarget) {
    return f.bind(oTarget)
}
44、根据包名,在指定空间中创建对象
function namespace(oNamespace, sPackage) {
    const arr = sPackage.split('.');
    let tem = oNamespace;
    arr.forEach(item => {
        const flag = tem[item] instanceof Object
        if(!flag) {
            tem[item] = {};
            tem = tem[item]
        } else {
            tem = tem[item]
        }
    })
    return oNamespace
}
45、数组去重
Array.prototype.uniq = function () {
    return [...(new Set(this))]
}
46、斐波那契数列
function fibonacci(n) {
    if(n > 0) {
        if(n ===1 || n === 2) {
            return 1
        }else {
            return fibonacci(n - 1 ) + fibonacci(n - 2)
        }
    }
}
47、时间格式化输出
function formatDate(t,str){
    var obj = {
    yyyy:t.getFullYear(),
    yy:(""+ t.getFullYear()).slice(-2),
    M:t.getMonth()+1,
    MM:("0"+ (t.getMonth()+1)).slice(-2),
    d:t.getDate(),
    dd:("0" + t.getDate()).slice(-2),
    H:t.getHours(),
    HH:("0" + t.getHours()).slice(-2),
    h:t.getHours() % 12,
    hh:("0"+t.getHours() % 12).slice(-2),
    m:t.getMinutes(),
    mm:("0" + t.getMinutes()).slice(-2),
    s:t.getSeconds(),
    ss:("0" + t.getSeconds()).slice(-2),
    w:['日', '一', '二', '三', '四', '五', '六'][t.getDay()] 
    };
    return str.replace(/([a-z]+)/ig,function($1){return obj[$1]})
}
48、获取字符串长度
function strLength(s, bUnicode255For1) {
    let size = s.length;
    if(bUnicode255For1) return size;
    for(let i = 0; i < s.length; i++) {
        if(s.charCodeAt(i) > 255) size++;
    }
    return size;
}
49、邮箱字符串判断
function isAvailableEmail(sEmail) {
    let reg = /^([\w+\.])+@(\w+)([.]\w+)+$/
    return reg.test(sEmail)
}
50、计数
function count(arr, item) {
    var j=0;
    arr.forEach(function(e){
        if(e==item)
            j++;
    });
    return j;
}
51、查找重复元素
function duplicates(arr) {
var newArr =[]
        for(var i =0 ;i<arr.length; i++){
          for(var j=i+1;j<arr.length;j++){
              if(arr[i]==arr[j]&&newArr.indexOf(arr[i])==-1){
                newArr.push(arr[i]) 
              }
          }
        }
        return newArr
}
52、计时器
function count(start, end) {
    if(start <= end){
        console.log(start);
        start++;
        st = setTimeout(function(){count(start, end)}, 100);
    }
    return {
        cancel: function(){clearTimeout(st);}
    }
}
53、流程控制
function fizzBuzz(num) {
    if(num%3===0 && num%5===0){
        return 'fizzbuzz';
    }else if(num%3===0 && num%5!==0){
        return 'fizz';
    }else if(num%5===0 && num%3!==0){
        return 'buzz';
    }else if(num===null || typeof(num)!== 'number'){
        return false;
    }else{
        return num;
    }

}
54、函数传参
function argsAsArray(fn, arr) {
    return fn.apply(this,arr);
}
55、函数上线文
function speak(fn, obj) {
    return fn.bind(obj)()
}
56、返回函数
function functionFunction(str) {
    var f=function(x){
       return str+", "+x
    }
    return f
}
57、使用闭包
function makeClosures(arr, fn) {
    let newArr=[];
    for(var i =0;i<arr.length;i++){
          newArr[i] = fn.bind(null,arr[i]);
    }
    return newArr;
}
58、二次封装函数
function partial(fn, str1, str2) {
    var result=function(str3){
        return fn(str1,str2,str3)
    }
    return result
}
59、使用arguments
function useArguments() {
    var num = 0;
    for(var i=0;i<arguments.length;i++){
        num += arguments[i];
    }
    return num;
}
60、使用apply调用函数
function callIt(fn) {
     return fn.apply(this,[].slice.call(arguments,1));
}

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1bkp3dg8znauz

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 41、dom 节点查找
  • 42、41直接跳到43,没有42题
  • 43、修改this指向
  • 44、根据包名,在指定空间中创建对象
  • 45、数组去重
  • 46、斐波那契数列
  • 47、时间格式化输出
  • 48、获取字符串长度
  • 49、邮箱字符串判断
  • 50、计数
  • 51、查找重复元素
  • 52、计时器
  • 53、流程控制
  • 54、函数传参
  • 55、函数上线文
  • 56、返回函数
  • 57、使用闭包
  • 58、二次封装函数
  • 59、使用arguments
  • 60、使用apply调用函数
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档