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