前言
这次总结一下项目中用到的一些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');
})