snowdrop's blog

小巧却实用的 javascript 方法

在开发中会遇到一些简单实用的方法,比如移动端设备判断,获取url参数或者去掉字符串中的空格等等,这篇博客目的就在于记录下这些方法,持续更新。

去掉字符串中的空格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
*去掉所有空格
* @param {any} str
* @param {any} isGlobal
* @returns
*/
let _trim = (str, isGlobal) => {
let result;
result = str.replace(/(^\s+)|(\s+$)/g, '');
if (isGlobal.toLowerCase() === 'g') {
result = result.replace(/\s/g, '');
}
return result;
};

默认替换字符串首位空格,如果第二个参数为g,则替换字符串中所有的空格。

获取 url 中参数

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* 获取 url 中的参数
* @param {any} name
* @returns
*/
let _getQueryString = (name) => {
let reg = new RegExp('(^|&?)' + name + '=([^&]*)(&|$)', 'i');
let r = window.location.search.substr(1).match(reg) || window.location.hash.substr(1).match(reg);
if (r != null) {
return decodeURIComponent(r[2]);
}
return null;
};

判断设备

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
let ua = window.navigator.userAgent;
let browser = {
isAndroid: () => {
return ua.match(/Android/i) ? true : false;
},
isIOS: () => {
return ua.match(/iPhone|iPad|iPod/i) ? true : false;
},
isWx: () => {
return ua.match(/micromessenger/i) ? true : false;
},
isWp: () => {
return ua.toLowerCase().indexOf('windows phone') > -1;
},
isMobile: () => {
return ua.match(/(iPhone|iPod|Android|ios)/i) ? true : false;
},
isPC: () => {
return ua.match(/(iPhone|iPod|Android|ios)/i) ? false : true;
}
};

/* android */
if (browser.isAndroid()) {
console.log('android');
}
/* ios */
if (browser.isIOS()) {
console.log('ios');
}
/* windows phone */
if (browser.isWp()) {
console.log('windows phone');
}
/* weixin */
if (browser.isWx()) {
console.log('weixin');
}
/* mobile */
if (browser.isMobile()) {
console.log('Mobile');
}
/* pc */
if (browser.isPC()) {
console.log('PC')
}

type类型判断

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
48
49
50
51
52
53
54
55
isString (o) { //是否字符串
return Object.prototype.toString.call(o).slice(8, -1) === 'String'
}

isNumber (o) { //是否数字
return Object.prototype.toString.call(o).slice(8, -1) === 'Number'
}

isBoolean (o) { //是否boolean
return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'
}

isFunction (o) { //是否函数
return Object.prototype.toString.call(o).slice(8, -1) === 'Function'
}

isNull (o) { //是否为null
return Object.prototype.toString.call(o).slice(8, -1) === 'Null'
}

isUndefined (o) { //是否undefined
return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'
}

isObj (o) { //是否对象
return Object.prototype.toString.call(o).slice(8, -1) === 'Object'
}

isArray (o) { //是否数组
return Object.prototype.toString.call(o).slice(8, -1) === 'Array'
}

isDate (o) { //是否时间
return Object.prototype.toString.call(o).slice(8, -1) === 'Date'
}

isRegExp (o) { //是否正则
return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'
}

isError (o) { //是否错误对象
return Object.prototype.toString.call(o).slice(8, -1) === 'Error'
}

isSymbol (o) { //是否Symbol函数
return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'
}

isPromise (o) { //是否Promise对象
return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'
}

isSet (o) { //是否Set对象
return Object.prototype.toString.call(o).slice(8, -1) === 'Set'
}

交换两个变量的值

利用 ES6 的解构实现,写法简单,语义非常清晰。

1
2
3
4
let x = 1;
let y = 2;
[x, y] = [y, x];
console.log(x,y); // 2 1

数组去重

利用ES6 的 Set 数据解构实现
``` javascript
function dedupe(array) {
return Array.from(new Set(array));
}

dedupe([1, 1, 2, 3]) // [1, 2, 3]

浏览量

扫描二维码,分享此文章