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;
    }
  • 相关阅读:
    Atitit attilax要工作研究的要素 纪要 方案 趋势 方向 概念 理论
    Atitit 常见每日流程日程日常工作.docx v7 r8f
    Atitit it 互联网 软件牛人的博客列表
    Atitit 信息链(Information Chain)的概念理解 attilax总结
    Atitit 知识点的体系化 框架与方法 如何了解 看待xxx
    Atitit 聚合搜索多个微博 attilax总结
    Atitit 企业知识管理PKM与PIM
    Atitit 项目沟通管理 Atitit 沟通之道 attilax著.docx
    Atitit 项目管理软件 在线服务 attilax总结 1. 项目管理协作的历史 1 1.1. Worktile 406k 1 1.2. Teambition  584k in baidu
    Atitit.每周末总结 于每周一计划日程表 流程表 v8 import 上周遗漏日志补充 检查话费 检查流量情况 Crm问候 Crm表total and 问候
  • 原文地址:https://www.cnblogs.com/t1amo/p/6549692.html
Copyright © 2011-2022 走看看