list

getParam


根据名称获取地址字符串中的参数值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/**
*
* @param {string} url
* @param {string} name
* @returns {string}
*/
function getParam(url, name) {
var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
if (reg.test(url)) return unescape(RegExp.$2.replace(/\+/g, " "));
return "";
}

/**
*
* @param {string} str 带有参数url地址
* 1. 判断逻辑 字符串且格式符合
* 2. 将参数key, value保存到{} value可以Number()转化的就转化 => {key:"user", value: "anonymous"}
* 3. 解构取出key,value
*/
function Parse(str) {
if (typeof str !== 'string') {
return {};
}
if (str.indexOf('?') >= 0) {
s = str.substring(str.indexOf('?') + 1)
}
return decodeURIComponent(s).split('&').map(param => {
const tmp = param.split('=');
const key = tmp[0];
let value = tmp[1] || true;
if (typeof value === 'string' && !isNaN(Number(value))) {
value = Number(value); // if判断value == '123'时 & Number(true) == 1
}
return { key, value }; // {key: "enabled", value: true}
}).reduce((params, item) => {
const { key, value } = item;
if (typeof params[key] === 'undefined') {
params[key] = value;
} else {
params[key] = Array.isArray(params[key]) ? params[key] : [params[key]];
params[key].push(value);
}
return params;
}, {});
}
// Parse('https://pan.baidu.com/disk/home#/all?vmode=list&path=%2F%E7%94%B5%E8%A7%86%E5%89%A7%2F%E7%AC%91%E5%82%B2%E6%B1%9F%E6%B9%96%20%E5%90%95%E9%A2%82%E8%B4%A4')
// {vmode: "list", path: "/电视剧/笑傲江湖 吕颂贤"}


getTagMap


统计网页当中使用了多少个标签?标签出现的次数?

1
2
3
4
5
6
7
8
function getTagMap() {
let tags = document.querySelectorAll('*');
return Array.from(tags).reduce((acc, cur) => {
let tagName = cur.tagName.toLowerCase();
acc[tagName] ? acc[tagName] += 1 : acc[tagName] = 1;
return acc;
}, {});
}