每日一题 2.9

123 阅读2分钟

代码类:

温故
['1','2','3'].map(parseInt) //这个的结果

结果是:[1,NaN,NaN]

map产生两个参数,一个是当前遍历数组的其中单个对象,第二个参数是遍历数组的index。parseInt可传入两个参数,一个是要解析的值,第二个是解析的值的进制,也就是基数,如果是0则为10进制,2就是2进制,注意基数不同对应传入的值也要不同,比如基数为2,则传入的数的形式得是2进制的数才行。parseInt会返回一个根据基数进行转化的十进制的数

知新
解析 URL 参数为对象

答案:

function parseURL(url){
    if (typeOf(url) !== "string") return [];
    else {
       const paramsMap = decodeURIComponent(url).split("?")[1].split("&");
       const params = []
       paramsMap.map(item=>{
           if (item.indexOf("=") > -1){
               const [key,value] = item.split("=")
               params[key] = value
           }else {
               params[item] = true
           }
       })
        return params
    }
}

常识类:

温故

js判断数据类型的四种方法

  1. typeof 只能判断string,number等简单类型,无法判断Function,Object等引用类型以及null(此时结果为Objecct)
  2. instranceof 能判断引用类型中的Function和Object等引用类型,但是对基础的数据类型没有效果
  3. constructor 能判断大部分的数据,但是遇到null和undefined的时候,这两个没有对应的构造器,没办法判断
  4. toString 万能药水 Object.prototype.toString.call(xxx) 此时得到的就是一个包含该类型信息的字符串
数组的常用方法

isArray: 判断是不是数组
toString: 将数组变成字符串,会进行一层扁平化
slice: 将给定的index将数组切分,不改变数组本身,返回切成的两个数组,slice(-1)可以用来做浅拷贝
splice: 插入或者删除数组中的参数,splice(1)就是删除数组中第3个参数之前的数据,splice(3,4) 就是删除第4个参数开始,第五个参数结束长度的数组,每次返回删除的数组,留下被操作后的数组,第三个参数是表示插入的数据,写几个从起始位置就插入几个 map,reduce,forEach,filter等: 遍历的各种方法,有的有返回值,有的传入fn some和every: 返回boolean,判断数组中是否符合对应的fn join: 根据join中写的参数,连接数组,返回一个str concat: 连接给的多个数组

知新

ajax的过程?

//直接上代码
const requset = new XMLHttpRequest();
requset.open("GET",url,"true")
requset.send();
requset.onreadystatechange = ()=>{
    if(requset.readystate === 4 && requset.status === 200){
        //此时写返回成功要进行的操作
        console.log(request)
    }
}

status状态码?
2xx :成功
3xx :页面重定向,一般也能显示页面
4xx :给定的url错误
5xx :服务器错误