1、对象里面的key不区分出string
var a={};
a[1]="a";
a["1"]=2;
console.log(a);
2、扩展Array原型,编写一个去除数组重复项的方法
// 算法一,两层循环,性能差
Array.prototype.unique = function(){
var len = this.length, i;
// 两两比较(数组长度大于1)
while ( --len > 0 ) {
i = len;
while ( --i >= 0 ) { // 前一项索引最小为0
if ( this[len] === this[i] ) { // 最后一项与前一项进行比较
//this.splice(i, 1); // this.length自动减一,删除前面的重复项
this.splice(len, 1); // this.length自动减一,删除后面的重复项
i--;
}
}
}
return this;
};
// 算法二,性能优化
Array.prototype.unique = function(){
var i, key, len = this.length,
cache = {}, // 缓存对象
ret = []; // 要返回的数组
for ( i = 0; i < len; i++ ) {
key = typeof this[i] + this[i];
if ( cache[key] !== 1 ) {
cache[key] = 1;
ret.push( this[i] );
}
}
return ret;;
};
// 解决方法三,直接使用jQuery.unique工具函数
var arr = [1,3,4,6,9,10,4,6];
arr = jQuery.unique( arr ); // [1, 3, 4, 6, 9, 10]
3、编写一个JavaScript函数 parseQueryString,它的用途是把URL参数解析为一个对象,如:var url = “http://witmax.cn/index.php?key0=0&key1=1&key2=2″
URL的编码规则:每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值
思路是这样的:
1.用?将url拆成两部分,第一部分为:http://witmax.cn/index.php,第二部分为:key0=0&key1=1&key2=2。也就是将地址和参数分开,保存在一个数组中。
1 var arr = url.split('?'); 2 console.log(arr.toString());
结果:
2. 在第一的基础上将之前的第二部分,也就是参数部分,用&拆成多个部分,如key0=0,key1=1。然后用=号将键值对拆开,key,value。
1 arr = arr[1].split('&');
2 console.log(arr.join(','));
3 for(var i = 0, len = arr.length; i < len; i++){
4 var a = arr[i].split('=');
5 params[a[0]] = a[1];
6 }
控制台输出:
下面给出完整的代码:
1 <script type="text/javascript">
2 /*
3 * 将URL参数解析为一个对象
4 * @param url 被解析的url地址。
5 * 如:http://witmax.cn/index.php?key0=0&key1=1&key2=2
6 * */
7 function parseQueryString(url){
8 /*如果地址为空或者url没有参数则直接返回空null*/
9 if(url == null || url.indexOf('?') == -1){
10 return null;
11 }
12 var params = {};
13 /*
14 * 用?将url拆成两部分,第一部分为:http://witmax.cn/index.php
15 * 第二部分为:key0=0&key1=1&key2=2
16 * */
17 var arr = url.split('?');
18 console.log(arr.toString());
19 if(arr.length <= 1){
20 return params;
21 }
22 /*
23 * 将之前的第二部分用&拆成多个部分,键值对
24 * 然后用=号将键值对拆开,key = value
25 * */
26 arr = arr[1].split('&');
27 console.log(arr.join(','));
28 for(var i = 0, len = arr.length; i < len; i++){
29 var a = arr[i].split('=');
30 params[a[0]] = a[1];
31 }
32 return params;
33 }
34 console.log(parseQueryString('http://witmax.cn/index.php? key0=0&key1=1&key2=2'));
35 </script>
