zoukankan      html  css  js  c++  java
  • js一些题目

    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>
    复制代码

     

  • 相关阅读:
    iOS 适配iPhoneX上tableHeaderView发生了高度拉伸、UI出现的空白间距
    无线加密WEP、WPA、WPA2及TKIP、AES
    字符替换操作
    jQuery版本升级问题汇总
    ipv6服务器及环境搭建
    git删除某次提交操作
    五种IO模型
    jQuery1.6以上attr改用prop
    线程创建pthread_create用法(转)
    网络字节序与主机字节序
  • 原文地址:https://www.cnblogs.com/danghuijian/p/3816879.html
Copyright © 2011-2022 走看看