Fork me on GitHub

项目中常用的一些方法

收藏一些项目中常用的一些方法

1、三位数分隔符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function format_number(n) {
if (!isNaN(n) && (n != null)) {
var b = parseInt(n).toString();
var len = b.length;
if (n > 0) {
if (len <= 3) {
return b;
}
var r = len % 3;
return r > 0 ? b.slice(0, r) + "," + b.slice(r, len).match(/\d{3}/g).join(",") : b.slice(r, len).match(/\d{3}/g).join(",");
} else {
if (len <= 4) {
return b;
}
var a = len % 3;
return a > 0 ? b.slice(0, a) + "," + b.slice(a, len).match(/\d{3}/g).join(",") : b.slice(a, len).match(/\d{3}/g).join(",");
}
} else return 0;
}

2、时间转换

1、精确到天

1
2
3
4
5
6
7
function getDateByDay(time) {
let oDate = new Date(time);
return '' + oDate.getFullYear() + '-' + toTen(oDate.getMonth() + 1) + '-' + toTen(oDate.getDate());
function toTen(number) {
return parseInt(number) < 10 ? '0' + number : '' + number;
}
}

2、精确到分钟

1
2
3
4
5
6
7
function getDate(time) {
let oDate = new Date(time);
return '' + oDate.getFullYear() + '-' + toTen(oDate.getMonth() + 1) + '-' + toTen(oDate.getDate()) + ' ' + toTen(oDate.getHours()) + ':' + toTen(oDate.getMinutes());
function toTen(number) {
return parseInt(number) < 10 ? '0' + number : '' + number;
}
}

3、URL拼接字符串

1
2
3
4
5
6
7
8
9
10
function qs(data) {
var str = '';
for (var k in data) {
if (!data[k]) {
data[k] = '';
}
str += k + '=' + data[k] + '&';
}
return str.slice(0, -1)
}

4、将一个二维数组分割成多个二维数组

1
2
3
4
5
6
7
8
9
//arr需要切割的数组,len每份为多长
function splitArray(arr, len) {
var a_len = arr.length;
var result = [];
for (var i = 0; i < a_len; i += len) {
result.push(arr.slice(i, i + len));
}
return result;
}

5、获取url后面的参数并转换成对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function transformUrlToObj(url) {
var url = url;
var nameValue;
var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
var paraObj = {};
for (var i = 0; nameValue = paraString[i]; i++) {
var name = nameValue.substring(0, nameValue.indexOf("=")).toLowerCase();
var value = nameValue.substring(nameValue.indexOf("=") + 1, nameValue.length);
if (value.indexOf("#") > -1) {
value = value.split("#")[0];
}
paraObj[name] = value;
}
//console.log(paraObj);
return paraObj;
};

6、删除数组中指定的索引下标值

1
2
3
4
5
6
7
8
9
10
11
deleteArr(arr, index) {    
if (isNaN(index) || index > arr.length) { return false;}
for (var i = 0, n = 0; i < arr.length; i++) {
if (arr[i] != arr[index]) {
arr[n++] = arr[i]
}
}
arr.length -= 1
}
var arr = [1,2,3,4,5];
deleteArr(arr, 1) //[1,3,4,5]

7、获取当前月之前的12个月(包括本月)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function get12Months() {
var monthArr = [];
var now = new Date();
var month = parseInt(now.getMonth() + 1);
var year = now.getFullYear();
for (var i = 0; i < 12; i++) {
if (month == 0) {
--year;
month = 12;
}
var obj = {
label: year + '年' + (month > 9 ? month : ('0' + month)) + '月',
str: year + '-' + (month > 9 ? month : ('0' + month))
};
monthArr.push(obj);
--month;
}
return monthArr;
}
//var arrMonth = get12Months();
//console.log(arrMonth);

8、数组去重

1
2
3
const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([4, 'fo', 4, 'fo', true, true]);
// [4, "fo", true]

9、平铺二维数组以及多维数组

1
2
3
4
5
6
7
8
9
10
11
const arr = [11, [22, 33], [44, 55], 66];
const flatArr = [].concat(...arr);
//=> [11, 22, 33, 44, 55, 66] 只能平铺二维数组
通过递归,平铺任意维度的数组
function flattenArray(arr) {
const flattened = [].concat(...arr);
return flattened.some(item => Array.isArray(item)) ? flattenArray(flattened) : flattened;
}
const arr = [11, [22, 33], [44, [55, 66, [77, [88]], 99]]];
const flatArr = flattenArray(arr);
// [11, 22, 33, 44, 55, 66, 77, 88, 99]

10、自定义脱敏

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
/***
* 自定义脱敏
* @param str(string), begin(number), end(number)
* @return {String}
* @constructor
* */
String.prototype.ribbonDesensitization = function(str, begin, end) {
if (typeof str == 'string') {
let arrayStr = str.split('');
arrayStr.splice(begin, 0, '~');
arrayStr.splice(end+1, 0, '~');
str = arrayStr.join('');
let ruten = str.substring(begin, end+2);
let arr = [];
for (let i = 0; i < ruten.length; i++) {
arr.push('*');
}
str = str.replace(ruten, arr.join('')).split('');
str.splice(begin, 1);
str.splice(end, 1);
return str.join('')
}else {
throw new Error('不是String类型')
}
}

未完待续…