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('');
    }
    
  • 相关阅读:
    Hdu-5983 2016ACM/ICPC亚洲区青岛站 B.Pocket Cube 模拟
    Codeforces Round #300 F
    cf298F:状压dp+剪枝
    POJ3294--Life Forms 后缀数组+二分答案 大于k个字符串的最长公共子串
    jzp线性筛及其简单应用
    Codeforces Round #299 (Div. 1)C. Tavas and Pashmaks (凸壳)
    Codeforces Round #236 (Div. 2)E. Strictly Positive Matrix(402E)
    【2012天津区域赛】部分题解 hdu4431—4441
    HDU4436---str2int 后缀树组(12年天津区域赛)
    Codeforces
  • 原文地址:https://www.cnblogs.com/Yfling/p/6628584.html
Copyright © 2011-2022 走看看