zoukankan      html  css  js  c++  java
  • 9道前端技能编程题

    1.修改this的指向

    封装函数 f,使 f 的 this 指向指定的对象

    // 方法1:
    function bindThis(func, oTarget) {
        return function(){
            return func.apply(oTarget, arguments);
        };
    }
    
    // 方法2
    function bindThis(f, oTarget) {
    	return  f.bind(oTarget);
    }
    

    2.获取 url 中的参数

    1. 指定参数名称,返回该参数的值 或者 空字符串
    2. 不指定参数名称,返回全部的参数对象 或者 {}
    3. 如果存在多个同名参数,则返回数组

    输入:getUrlParam('http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe', 'key')
    输出:[1, 2, 3]

    function getUrlParam(sUrl,sKey){
        var result = {};
        sUrl.replace(/??(w+)=(w+)&?/g,function(a,k,v){
            if(result[k] !== void 0){
                var t = result[k];
                result[k] = [].concat(t,v);
            }else{
                result[k] = v;
            }
        });
        if(sKey === void 0){
            return result;
        }else{
            return result[sKey] || '';
        }
    }
    

    3.dom结点查找

    查找两个节点的最近的一个共同父节点,可以包括节点自身

    function commonParentNode(oNode1, oNode2) {
        if(oNode1.contains(oNode2)){
            return oNode1;
        }
        else if(oNode2.contains(oNode1)){
            return oNode2;
        }
        else{
            return arguments.callee(oNode1.parentNode,oNode2);
        }
    }
    

    4.邮箱字符串判断

    判断输入是否是正确的邮箱格式

    function isAvailableEmail(sEmail) {   
        var reg = /^(w)+(.w+)*@(w)+((.w+)+)$/;    
        return reg.test(sEmail);
    }
    

    5.数组去重

    Array.prototype.uniq = function() {   
        var arr = [];   
        var flag = true;        
        for (var i = 0; i < this.length; i++) {
            if (arr.indexOf(this[i]) == -1) {  // 如果没有找到indexOf会返回-1
                if (this[i] != this[i]) {   //排除 NaN              
                    if (flag) {                   
                        arr.push(this[i]);                   
                        flag = false;              
                    }           
    
                } 
                else {                
                    arr.push(this[i]);           
                }       
            }   
        }    
        return arr;
    }
    
    

    6.斐波那契数列

    用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等

    function fibonacci(n) {
        // 0 1 1 2 3 5 8
        // 0 1 2 3 4 5 6
        
        if (n == 0 || n == 1) {
            return n;
        }
        
        return fibonacci(n-1) + fibonacci(n-2);
    }
    

    7.将字符串转换为驼峰

    比如:font-size -> fontSize

    function cssStyle2DomStyle(sName) {
        var arr = sName.split(''); 
        //判断第一个是不是 '-',是的话就删除
        if(arr.indexOf('-') == 0)
            arr.splice(0,1);
       //处理剩余的'-'
        for(var i=0; i<arr.length; i++){
            if(arr[i] == '-'){
                arr.splice(i,1);  // 删除-符号
                arr[i] = arr[i].toUpperCase();
            }
        }
        return arr.join('');
    }
    
  • 相关阅读:
    E寻宝(贪心)
    千万别点进来,点进来你就哭了(最短路,dijkstra)
    H小明买年糕(前缀和+二分)
    Charles破解
    Jmeter安装插件
    appium环境搭建
    SourceTree安装和教程
    Appium-desktopAppium-desktop 安装与入门使用
    appium终端安装
    Seleinum_CSS定位方式
  • 原文地址:https://www.cnblogs.com/Yfling/p/6628584.html
Copyright © 2011-2022 走看看