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