zoukankan      html  css  js  c++  java
  • 腾讯2013笔试题—web前端笔试题 (老题练手)

    问题描述(web前端开发附加题1):
    编写一个javascript的函数把url解析为与页面的javascript.location对象相似的实体对象,如:url :'http://www.qq.com/index.html?key1=1&key2=2',最后输出的对象是

    {
        protocol: "http", 
        hostname: "www.qq.com", 
        pathname: "index.html", 
        query: "key1=1&key2=2"
    }

    我的答案:

     1     var mylocation = {
     2         'protocol':'http',
     3         'hostname':'',
     4         'pathname':'',
     5         'query':''
     6     }
     7     var url = 'http://www.qq.com/index.html?key1=1&key2=2';
     8     var str=url.replace(/http:///,"");
     9     var a=str.split(/(/)|(?)/g);
    10     mylocation.hostname=a[0];
    11     var arr=a[1].split("?");
    12     mylocation.pathname=arr[0];
    13     mylocation.query=arr[1];
    14     console.log(mylocation);

    发现一个有趣的现象,这里提出与大家分享:
    本来打算直接有正则分解字符串:
    str.split(/(/)|(?)/g);
    最后发现怎么搞都是:
    ["www.qq.com", "/", undefined, "index.html", undefined, "?", "key1=1&key2=2"]

    最后查了资料才知道,split方法在用正则分解字符串的时候不会消除正则表达式,为此纠结好久。

    作用:

    split() 方法用于把一个字符串分割成字符串数组。

    语法:

    stringObject.split(separator,howmany)
    参数描述
    separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
    howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

    返回值:

    一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

    但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。

  • 相关阅读:
    jmeter工具应用1
    django1
    5.自动化测试模型
    4.清除cookie操作
    2.操作浏览器
    3.8种元素定位
    1.介绍与环境安装
    模块
    urllib库
    自动化测试PO模式
  • 原文地址:https://www.cnblogs.com/wolm/p/3383474.html
Copyright © 2011-2022 走看看