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

    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.说出以下代码的原型链

  • 相关阅读:
    【转】VS2010中 C++创建DLL图解
    [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode
    [转]关于NSAutoreleasePool' is unavailable: not available in automatic reference counting mode的解决方法
    【转】 Tomcat v7.0 Server at localhost was unable to start within 45
    【转】Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If
    【转】SVN管理多个项目版本库
    【转】eclipse安装SVN插件的两种方法
    【转】MYSQL启用日志,和查看日志
    【转】Repository has not been enabled to accept revision propchanges
    【转】SVN库的迁移
  • 原文地址:https://www.cnblogs.com/t1amo/p/6594230.html
Copyright © 2011-2022 走看看