zoukankan      html  css  js  c++  java
  • 编程题总结

    /*编写一个方法,对传入的参数进行排序*/
    //考察arguments对象,对象属性的遍历

    function sortArguments(){
    var arr=[];
    for(var key in arguments){
    arr.push(arguments[key]);
    }
    return arr.sort();
    }

    /** 
    *@desc: fibonacci 
    *@param: count {Number} 
    *@return: result {Number} 第count个fibonacci值,计数从0开始  
    fibonacci数列为:[1, 1, 2, 3, 5, 8, 13, 21, 34 …]  
    则getNthFibonacci(0)返回值为1  
    则getNthFibonacci(4)返回值为5 */
    //规律:第三个数是前两个数之和

    function fibonacci(n){
         var arr=[1,1];
         if (n==1) return arr[0];
         if (n==2) return arr;

         for (var i = 2; i < n; i++) {
         arr[i]=arr[i-2]+arr[i-1];
         };
         return arr;
    }

    /*.有这样一个URL,http://mail.163.com/?a=1&b=2&c=3&d=xxx&e。
    输出函数QuerySearch(),其有一个参数name,输出其对应的value。
    */

    考察的是字符串操作

    思路:str.split(‘?’)[1]返回的是问号后面的字符串

    再使用一次split(‘&’)返回的是数组

    通过遍历数组元素字符串,使用indexOf()判断输入的name+'='是否为-1,如果是就表明不存在,遍历下一个,如果不为-1,表明存在,返回该数组元素中的=后面的值,使用slice(start),start是(name+'=').length

    function querySearch(url,name){
        var arr=url.split('?')[1].split('&');
        var msg=name+'=';
        for (var i = 0; i < arr.length;) {
            var index=arr[i].indexOf(msg);
            if (index<0) {
                i++;
            }else{
                start=msg.length;
                return arr[i].slice(start)
            };
        };
        return "NOT FOUND";
    }

    /*编写一个方法,去掉一个数组的重复元素。*/

    思路:把数组的值一次放入新的数组,放入之前判断已经放入的元素有没有一样的值

    newarr.indexOf(arr[i])==-1表示没有

    function removeDuplicate(arr) {
        var result=[];
        for (var i = 0; i < arr.length; i++) {
            if (result.indexOf(arr[i])==-1) {
                result.push(arr[i]);
            };
        };
        return result;
          
    }

    /*编写一个JavaScript函数,传入仅包含数字的多维数组,返回拍平后的结果。
    (比如,传入[1,[2,3]],返回[1,2,3])*/

    思路,arr的join()转化为字符串,再用str的split转化为数组,注意:这时候数组的值是字符串,应该用Number()转化类型,还用到了arr的map方法

    function flatten(arr) {
        //return  flatted_arr;
        var newarr = arr.join().split(",");
        //字符串类型转化为数字类型
        return newarr.map(function(e) {
            return Number(e)
        })
    
    }

    /*请写一个 getParents 方法让它可以获取某一个 DOM 元素的所有父亲节点。*/

    思路:通过id获取该元素,e.parentNode.parentNode....考虑用while语句,语句中先把获取到父元素的tagName存入数组,然后获取到该父元素的父元素,判断是否存在(parent.tagName)

    function getParents(id) {
        var e = document.getElementById(id);
        var parent = e.parentNode;
        var arr = [];
        //while先判断再执行
        while (parent.tagName) {
            arr.push(parent.tagName);
            parent = parent.parentNode;
        }
    
        console.log(arr)
    };

    /*已知有字符foo="get-element-by-id",写一个function将其转换成驼峰表示法"getElementById" */

    思路:arr的split分割成数组,循环遍历数组,使用charAt(0)获取第一个字符变成大写,再使用concat(1)连接剩下的数组,最后再用数组的Join('')连起来

    tips:一定要用join(‘’),不然会用逗号连起来

    function toUpperNote(str) {
        var result;
        var arr;
        arr = str.split('-');
        for (var i = 1; i < arr.length; i++) {
            arr[i] = arr[i].charAt(0).toUpperCase().concat(arr[i].slice(1))
        };
        return arr.join('');
    }

     // 截取location.search,转换为一个对象:

    function searchToObject(str) {
        str = str.slice(1);
        var arr = str.split("&");
        var obj={},
            newarr;
        arr.forEach(function(e) {
    
            newarr = e.split("=");
            if (newarr[0] && newarr[1]) { obj[newarr[0]] = newarr[1] }
    
        });
        return obj;
    
    }

     cookie的设置,删除,获取

    function setCookie(name,value,path,domain,expires,secure){
        var cookie=name+"="+encodeURIComponent(value);
        if (expires instanceof Date) cookie+="; expires="+expires.toGMTString();
        if (path) cookie+="; ="+path;
        if (domain) cookie+="; domain="+domain;
        document.cookie=cookie;
    
    }
    
    function getCookie(){
        var cookie={};
    
        var all=document.cookie;
        if (all===null) return cookie;
        var list=all.split("; ");
    
        for (var i = 0; i < list.length; i++) {
             
            var p=list[i].indexOf("=");
    
            var name=list[i].substring(0,p);
            var value=list[i].substring(p+1);
            value=decodeURIComponent(value);
            cookie[name]=value;
        }
        return cookie;
    }
    
    function delCookie(name,path,domain,secure){
        //必须要设置成相同的域和路径才可以
        var cval=getCookie().name;
        if (cval!=null) {
            document.cookie=name+"="+cval+ "; max-age=0";
        };
    }

     实现深度克隆

    function deepClone(obj){
        var result,oClass=isClass(obj);
            //确定result的类型
        if(oClass==="Object"){
            result={};
        }else if(oClass==="Array"){
            result=[];
        }else{
            return obj;
        }
        for(key in obj){
            var copy=obj[key];
            if(isClass(copy)=="Object"){
                result[key]=arguments.callee(copy);//递归调用
            }else if(isClass(copy)=="Array"){
                result[key]=arguments.callee(copy);
            }else{
                result[key]=obj[key];
            }
        }
        return result;
    }
    //返回传递给他的任意对象的类
    function isClass(o){
        if(o===null) return "Null";
        if(o===undefined) return "Undefined";
        return Object.prototype.toString.call(o).slice(8,-1);
    }

    页面所有的checkbox

    (function getCheckbox() {
            var oInput = document.getElementsByTagName("input");
            var len = oInput.length;
            var aList = [];
            while (len--) {        //while的效率比较高
                if (oInput[len].type == "checkbox") {
                    aList.push(oInput[len]);
                };
            }
            console.log(aList) ;
        })();

     .输出今天的日期,以YYYY-MM-DD的方式,比如今天是2014年9月26日,则输出2014-09-26

    function getMydate(){
        var date=new Date;
        var year=date.getFullYear();
        var month=date.getMonth()+1;
        var day=date.getDate();
        day = day < 10 ? '0' + day : day;//如果小于10加上0
        return year+"-"+month+"-"+day;
    }
  • 相关阅读:
    HTML5开发在你的游戏应用中加入广告(转)
    AJAX笔试面试题汇总
    jQuery boxy弹出层插件中文演示及讲解(转)
    jquery获取css中的选择器
    post与get在ashx中的取值的区别
    css元素定位和布局
    jquery作用和优势
    css选择器
    css中的框架模型
    javascript中的对Attr(dom中属性)操作
  • 原文地址:https://www.cnblogs.com/t1amo/p/6549692.html
Copyright © 2011-2022 走看看