js练习题(一)

1,点击按钮后,将下列li倒序排列

<ul>
<li class = "a">我是第1列</li>
<li class = "b">我是第2列</li>
<li class = "c">我是第3列</li>
<li class = "d">我是第4列</li>
<li class = "e">我是第5列</li>
</ul>
<button id="btn">倒序排列</button>

参考答案:

    var btn = document.getElementById('btn');
    var ul = document.getElementsByTagName('ul')[0];
    var old_li = ul.childNodes;
    btn.addEventListener("click", function(event) {
        for (var i = old_li.length; i > 0; i--) {
            ul.appendChild(old_li[i - 1]);
        }
    }, false);

ps:这里无意中发现appendChild()没有出现想象中的添加,而是像操作“指针”的效果一样,自动完成了添加后删除了原来的节点,具体原理还不清楚。

2,给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
参考答案:

  Array.prototype.distinct = function() {
        var arr = [];
        for(var i =0;i<this.length;i++){
            if(this.indexOf(this[i])!=i){
                arr.push(this[i]);
            }
        }
        return arr;
    };

3,编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象
参考答案:

     function parseQueryString(url){
        var req = {};
        url = url.split("?")[1];
        var objs = url.split("&");
        for (var i = 0; i<objs.length ; i++) {
            console.log(objs[i].split("="));
            req[objs[i].split("=")[0]] =  objs[i].split("=")[1];
        };
        return req;
    }

ps:这里的实现还不算完整如果url是经过编码的情况,如果参数中含有“#”(比如oauth授权)等情况都没有考虑。

4,对象的深拷贝
参考答案:

var deepCopy = function(source){
    var result = {};
    for(var i in source){
        result[i] = typeof source[i]==='object'?deepCopy(source[i]):source[i];
    }
    return result;
}

5,js实现快速排序
这里推荐看这篇日志,写的很好
http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值