JavaScript 常用方法封装
前言
数组常用方法
# 一. 数组获取不重复元素
从数组中随机取出几个不重复的子元素:
/**
* 从数组中随机取出几个不重复的数组
*
* @param array 数组
* @param count 数量
*
* @return {Array|*} 结果
*/
getChildArray(array, count) {
if (count > array.length) {
return array;
}
// 深拷贝 (newArr.splice 会改变原有数组)
let arrayStr = JSON.stringify(array);
let newArr = JSON.parse(arrayStr);
let out = [];
while(out.length < count){
let temp = (Math.random() * newArr.length) >> 0;
out.push(newArr.splice(temp,1)[0]);
}
newArr = null;
return out;
},
# 使用:
let array = ['aaa', 'bbb', 'ccc', 'ddd'];
this.getChildArray(array, 2);
// 输出:
['aaa', 'ccc']
# 二. 时间戳转化为日期格式字符串
/**
* 时间戳转化为年 月 日 时 分 秒
* number: 传入时间戳
* format:返回格式,支持自定义,但参数必须与formateArr里保持一致
*/
formatTimeStr(number,format) {
var formateArr = ['Y','M','D','h','m','s'];
var returnArr = [];
var date = new Date(number * 1000);
returnArr.push(date.getFullYear());
returnArr.push(this.formatNumber(date.getMonth() + 1));
returnArr.push(this.formatNumber(date.getDate()));
returnArr.push(this.formatNumber(date.getHours()));
returnArr.push(this.formatNumber(date.getMinutes()));
returnArr.push(this.formatNumber(date.getSeconds()));
for (var i in returnArr) {
format = format.replace(formateArr[i], returnArr[i]);
}
return format;
},
formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
},
# 使用:
this.formatTimeStr(10210201, 'Y-M-D h:m:s');
// 输出
2020-09-09 12:00:00
# 三. 将秒转换成时间显示
/**
* 将秒转换成时间显示
*
* @param num 秒数
*
* @returns {string} 00:00:00
*/
changeNumToTime (num) {
let min = parseInt(num / 60);
let strHour = '';
let hour = parseInt(min / 60);
if (hour > 0 && hour < 10) {
strHour = '0'+hour +':';
min = parseInt(min % 60);
} else if (hour > 0) {
strHour = hour +':';
min = parseInt(min % 60);
}
let second = num%60;
let strMin = min +'';
let strSec = second +'';
if (min === 0) {
strMin = "0";
}
if (min < 10) {
strMin = "0" + min;
}
if (second < 10) {
strSec = "0" + second;
}
return strHour + strMin + ":" + strSec;
},
# 四. 获取随机数
# 1. 获取随机整数:
/**
* 获取 min 到 max 的随机整数
*
* @param min 最小值 (包含)
* @param max 最大值 (包含)
*
* @returns {number} 随机数
*/
getRandomInt (min, max) {
return Math.floor(Math.random() * (parseInt(max) - parseInt(min) + 1)) + parseInt(min);
},
# 2. 获取随机数 (包括小数):
/**
* 获取 min 到 max 的随机数 (包括小数)
*
* @param min 最小值 (包含)
* @param max 最大值 (不包含)
*
* @returns {number} 随机数
*/
getRandomArbitrary (min, max){
return Math.random() * (max - min) + min;
},
# 3. 获取 -1 到 1 的随机数
/**
* 获取 -1 到 1 的随机数 (包括小数)
*
* @param min 最小值 (包含)
* @param max 最大值 (不包含)
*
* @returns {number} 随机数
*/
getRandomRange (range) {
return Math.random() * (Math.random() >= 0.5 ? 1 : -1) * range;
},
# 五. 截取字符串
/**
* 截取字符串
*
* @param str 字符串
* @param limit 截取长度
* @return {string|*} 截取后字符串 (不包含...)
*/
cutOutString (str, limit) {
if (str == undefined) {
return '';
}
let length = str.length;
if (length > limit) {
let temp = '';
temp = str.substring(0, limit) + '...';
return temp;
} else {
return str;
}
},
# 使用:
this.cutOutString('adsdsds', 2);
// 输出:
as...
# 六. 清除或截断数组
在不重新分配数组的情况下清除或截断数组的一种简单方法是修改length
属性值:
const arr = [11, 22, 33, 44, 55, 66];
// 截断
arr.length = 3;
console.log(arr); //=> [11, 22, 33]
// 清除
arr.length = 0;
console.log(arr); //=> []
console.log(arr[2]); //=> undefined