AlexZ33 / lessions

自己练习的各种demo和课程
12 stars 2 forks source link

URL操作 #37

Open AlexZ33 opened 5 years ago

AlexZ33 commented 5 years ago

URLSearchParams

let url = '?wd=蔡徐坤&skill=篮球&year=2019';
let searchParams = new URLSearchParams(url);

for (let p of searchParams) {
  console.log(p);
}
// ["wd", "蔡徐坤"]
// ["skill", "篮球"]
// ["year", "2019"]

获取单个字段的值

searchParams.get('wd') // "蔡徐坤"
searchParams.get('skill') // "篮球"
searchParams.get('year') // "2019"

不知道一个字段是否存在,所以想事先校验下

searchParams.has('wd') // true
searchParams.has('age') // false

append方法来添加字段,这个方法接收两个参数,前者是key,后者是value

searchParams.append('age', 26);
searchParams.has('age'); // true
searchParams.get('age'); // 26

删除字段

searchParams.delete('year');
searchParams.has('year'); // false

有时候想重写一个字段,而不是添加(append)一个字段,这时候需要使用set方法

searchParams.set('skill', '篮球 唱 跳 rap');

转为字符串

searchParams.toString(); // "wd=蔡徐坤&skill=篮球+唱+跳+rap&year=2019&age=26"
AlexZ33 commented 5 years ago

手写个

function getParams(name) { 
  let query = window.location.search.substring(1); 
  let vars = query.split("&"); 
  for (let i = 0; i < vars.length; i++) { 
   let pair = vars[i].split("="); 
   if(pair[0] === name){ 
    return pair[1] 
   } 
  } 
  return null; 
 }
AlexZ33 commented 5 years ago

qs

AlexZ33 commented 5 years ago

Gozala/querystring

AlexZ33 commented 5 years ago
// 判断当前Path是否为合法URL
/* eslint no-useless-escape:0 */
export function isURL(path) {
    const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/g;
    return reg.test(path);
}