• 编程题总结(二)


    1、一个数组 par 中存放有多个人员的信息,每个人员的信息由年龄 age 和姓名 name 组成,如{age: 2, name: 'xx'}。请写一段 JS 程序,对这个数组按年龄从小到大进行排序。

    function sortAge(arr){
         return arr.sort(function(arr1,arr2){
             return arr1.age-arr2.age;
         })
    
    }

    return a-b:倒序

    return b-a:升序

    2、有字符串 var = 'abc345efgabcab',请写出 3 条 JS 语句分别实现如下 3 个功能:

    1)去掉字符串中的a、b、c 字符,形成结果:'345efg'    str.replace(/[abc]/g,'')
    2)将字符串中的数字用中括号括起来,形成结果:'abc3[5]efgabcab'  str.replace(/(d)+/g, '[$1]');
    3)将字符串中的每个数字的值分别乘以 2,形成结果:'abc6810efgabcab' str.replace(/(d)/g, function(num) {return num*2;});

    3、请写出下面 JS 程序中几个 alert 的结果:

    var a = 100;
    function fn() {
        alert(a);
        var a = 200;
        alert(a);
    }
    fn(); undefined 200
    alert(a);100
    var a;
    alert(a);100
    var a = 300;
    alert(a);300

    4、请问以前 JS 程序有什么问题?应该如何优化?

    function setStyle(element) {
        element.style.fontWeight = "bold";
        element.style.textDecoration = "none";
        element.style.color = "#000000";
    }

    优化后:

    function setStyle(element) {
        if (!element.style) {
            return;
        }
        var eleStyle = element.style;
        eleStyle.fontWeight = "bold";
        eleStyle.textDecoration = "none";
        eleStyle.color = "#000000";
    }

    5、请写出一下正则表达式:

    1)匹配一个全部是数字的字符串 

    var pat=/^d+$/;
    //开头到结尾都是数字的字符
    var str='2345';
    str.match(pat)
    //["2345"]

    2)提取一个 url 所使用的协议类型如 http、ftp 和 host 名称

    var str = 'http://yangbai.me';
    var pat=/(w+)://([w.]+)/;
    var result=str.match(pat);
    //["http://yangbai.me", "http", "yangbai.me"]
    var http=result[1];
    var host=result[2];

    6、请使用闭包的方式,写一段 JS 程序实现如下功能:函数每调用一次则该函数的返回值加 1。

    function fn(){
        var n=0;
        function fn1(){
            n++;
            console.log(n);
        }
        return fn1;
    }
    
    var foo=fn();
    foo();  //1
    foo();  //2
    foo();  //3

    7、有这样一个 URL:http://vip.qq.com/a.php?a=1&b=2&c=&d=xxx&e,请写一段 JS 程序提取 URL 中的各个参数(参数名和参数个数不确定),将其按 key-value 形式返回到一个 json 结构中,如{a:'1',b:'2',c:'',d:'xxx',e:undefined}。

    function UrltoJson(url){
        var arr=url.split('?')[1].split('&');
        var result={};
        arr.forEach(function(e){
            var aEle=e.split('=');
            result[aEle[0]]= aEle[1]? aEle[1]:undefined;
    //判断是否存在
        })
        return result;
    }

     8、编写一个方法 求一个字符串的字节长度 

    function getBytes(str){
        var len=str.length;
        var bytes=len;
        for (var i = 0; i < len; i++) {
            if (str.charCodeAt(i)>255) {bytes++};
    //Unicode大于255的字符占两个字节,其他占一个字节
        };
        return bytes;
    }

     9、判断一个字符串中出现次数最多的字符,统计这个次数

    把字母依次放在对象里,每次放之前判断已经存在这个属性,存在value+1;否则value=1;最后遍历这个对象,比较对象的max值,把最大的value和key打印出来

    function maxTime(str){
        var len=str.length;
        var obj={};
        //将结果放在一个对象里,统计出现的次数
        for (var i = 0; i < len; i++) {
            var key=str.charAt(i);
            if (!obj[key]) {
                obj[key]=1;
            }else{
                obj[key]++;
            };
        };
    
        var max=-1;
        var max_key="";
        for (var key in obj){
            if (obj[key]>max) {
                max=obj[key];
                max_key=key;
            };
        }
        return "出现次数最多的字母是:"+max_key+"出现次数为:"+max;
        
    }

    10、什么是闭包?下面这个ul,如何点击每一列的时候alert其index?

    <ul id="myul">
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    (function() {
           var ali = document.getElementsByTagName("li");
           
            var len = ali.length;
             for (var i = 0; i < len; i++) {
                ali[i].onclick = (function(i) {
                    return function() {
                        alert(i + 1);
                    }
                })(i);
            };
        })();
    
    ///*应该使用闭包的方式:使用立即执行函数 (function(i){})(i),将i作为参数传递进去,内部返回了一个函数,返回的函数会引用该参数;

    11.实现缺少的解析函数

     

    function tmpl(str,obj){
        var name=obj.name;
        var job=obj.job;
        return str.replace(/{name}/g,name).replace(/{job}/g,job);
    
    }

     12.说出以下代码的原型链

  • 相关阅读:
    c# ThreadPool 判断子线程全部执行完毕的四种方法
    很多人都爱玩的lol..
    Go 的位操作
    wrk压测工具
    Go函数作为值与类型
    家用PC发展设想
    开车的烦恼
    一款一体机的设想
    nodejs开发环境的搭建
    Python网页抓取程序(续)
  • 原文地址:https://www.cnblogs.com/t1amo/p/6594230.html
Copyright © 2020-2023  润新知