JavaScript必然会使用到的工具方法

114 阅读2分钟

js.jpg

前言

这次总结一下项目中用到的一些js方法,避免在之后的开发中再次造轮子。

数组字符串去重方法

数组去重方法

简介:

Set 是 es6 新增的数据结构,似于数组,但它所有元素都是唯一的,没有重复的值,所以可以利用这个特性进行数组去重

示例:

    [...new Set(example)];  //数组去重方法

    let example = [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6, 7,]
    console.log('数组去重', [...new Set(example)])  //[1, 2, 3, 4, 5, 6, 7, 8, 9]

字符串去重

简介:

扩展运算符(...)是 ES6 的语法,用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中。 因为被拓展运算符取出放入了数组所以需要使用 join('') 方法把数组中的所有元素放入一个字符串,以指定的分隔符进行分隔的。 还原回字符串

示例:

    [...new Set(example)].join('') //字符串去重方法
    
    let example = '1123432523424'
    console.log('字符串去重', [...new Set(example)].join(''));

数据类型精准判断方法

简介:

目前最为精准的数据类型判断方法。(如果你不修改toString方法啊的话)

示例:

Object.prototype.toString.call(example)

数组数字排序方法

示例:

example.sort((a, b) => {
return a - b; //从小到大排序
});

example.sort((a, b) => {
return b - a; //从大到小排序
});

数组随机选取一个值

简介:

Math.floor() 返回小于或等于一个给定数字的最大整数。 Math.random()方法返回大于等于 0 小于 1 的一个随机数。

示例:


example[Math.floor(Math.random() * example.length)]

取数组内重复最多的值

示例:

foo(array) {
    let arr = []; //存放最多次数的值
    let temp = {}; //保存每个数的个数
    let res = 0; //记录出现最多次数的个数
    array.forEach(item => {
	if (temp[item] === undefined) {
            //如果这个数之前没出现过
            temp[item] = 1; //将它的次数赋为1
	} else {
            temp[item]++; //次数++
	}
    });
    for (let i in temp) {
	//遍历下标
	if (temp[i] > res) {
            //如果这个数的次数比之前出现过的最多次数还多
            arr.length = 0; //清空数组
            arr.push(Number(i)); //将这个数加入最终答案,因为属性名是字符串,将它转换为数字
            res = temp[i]; //更新最大次数
	} else if (temp[i] === res) {
            //出现次数相同的数字
            arr.push(Number(i)); //将答案加入数组
            res = temp[i]; //更新最大次数
	}
    }
    return arr[0];
}

节流

简介:

全局定义一个 timer,delay 为延迟时间

示例:

因为是vue的项目所以在data里创建一个 timer = null

throttle(fn, delay) {
    if (this.timer == null) {
        this.timer = setTimeout(() => {
        fn()//运行传入的方法
        clearTimeout(this.timer)//取消计时器
        this.timer = null
        }, delay)
    }
}
//使用
throttle(执行方法,1000)

js 实现页面加载完后执行, document.ready, created 生命周期

示例:

    (() => {
        let fu = document;
        fu.ready = (f) => {
            return fu.addEventListener('DOMContentLoaded', f, false);
        };
    })();

    //使用
    document.ready(() => {
        console.log('JS实现document.ready');
    })

时间转换方法

请移步 juejin.cn/post/711167…