获取指定范围内的随机数
function getRadomNum(min,max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
随机获取数组中的元素
function getRadomFromArr(arr){
return arr[Math.floor(Math.random()*arr.length)];
}
生成从0到指定值的数字数组
function getArray(len) {
var arr = [],i = 1;
for (; arr.push(i++) < len;);
console.log(arr)
}
function getArray(len) {
var arr = [],i = 1;
for (; i < len; i++) {
arr.push(i)
}
console.log(arr)
}
打乱数字数组的顺序
var arr = [1, 2, 3, 4, 5, 6, 7, 'a', 'dsfs', 8, 9, 'v'];
arr.sort(function() {
return Math.random() - 0.5
});
对象转换为数组
var obj = {
0: 'qian',
1: 'long',
2: 'chu',
3: 'tian',
length: 4
}
var objArr = Array.prototype.slice.call(obj);
console.log(objArr)
验证是否为数组
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
获取数组中最大或者最小值
function maxAndMin(arr){
return {
max:Math.max.apply(null,arr.join(',').split(',')),
min:Math.min.apply(null,arr.join(',').split(','))
}
}
清空数组
var arr = [1, 2, 3, 4, 5];
arr.length = 0;
var arr = [1, 2, 3, 4, 5];
arr.splice(0, arr.length);
var arr = [1, 2, 3, 4, 5];
arr = [];
保留指定小数位
var num =4.345678;
num = num.toFixed(4);
生成指定长度的随机字母数字字符串
function getRandomStr(len) {
for (var str = ''; str.length < len; str += Math.random().toString(36).substr(2));
return str.substr(0, len)
}
找出数组中出现次数最的元素,并给出其出现过的位置
function getMaxAndIndex(arr) {
var obj = {};
arr.forEach(function(item, index) {
if (!obj[item]) {
obj[item] = {
indexs: [index]
}
} else {
obj[item]['indexs'].push(index);
}
});
var num = 0;
var str = '';
var reArr;
for (var attr in obj) {
var temp = obj[attr]['indexs'];
if (temp.length > num) {
num = temp.length;
str = attr;
reArr = temp;
}
}
return {
maxStr: str,
indexs: reArr
}
}
简单一维数组的去重
方法一:双层循环去重
function uniqueArr(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
方法二:利用对象的属性不能相同去重
function uniqueArr(arr) {
var result = [];
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
return result;
}
方法三:利用下标
function uniqueArr(arr) {
var result = [arr[0]];
for (var i = 1; i < arr.length; i++) {
if (result.indexOf(arr[i]) == -1) {
result.push(arr[i]);
}
}
return result;
}
方法四:ES6去重
function uniqueArr(arr) {
return Array.from(new Set(arr));
}
包含对象的二维数组去重
方法一:双重循环去除法
function uniqueArr(arr, key) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
var flag = true;
for (var j = 0; j < newArr.length; j++) {
if (arr[i][key] == newArr[j][key]) {
flag = false;
}
}
if (flag) newArr.push(arr[i]);
}
return newArr;
}
方法二:利用reduce来实现
function uniqueArr(arr, key) {
var hash = {};
return arr.reduce(function(item, next) {
hash[next[key]] ? '' : hash[next[key]] = true && item.push(next);
return item
}, []);
}
例子:
var arr = [{
id: '001',
name: 'Jack'
},
{
id: '002',
name: 'Eric'
},
{
id: '003',
name: 'Tom'
},
{
id: '003',
name: 'Lucy'
},
{
id: '002',
name: 'Lucy'
},
{
id: '004',
name: 'Jacky'
},
]
uniqueArr(arr, 'id');
金钱格式化(12,000,000)
const formatNumber = str => str.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
强制取反
let str = ''
console.log(!!str)
判断数据类型
function checkType(any) {
return Object.prototype.toString.call(any).slice(8, -1)
}
数据深拷贝
function checkType(any) {
return Object.prototype.toString.call(any).slice(8, -1)
}
function deepClone(any){
if(checkType(any) === 'Object') {
let o = {};
for(let key in any) {
o[key] = clone(any[key])
}
return o;
} else if(checkType(any) === 'Array') {
var arr = []
for(let i = 0,leng = any.length;i<leng;i++) {
arr[i] = clone(any[i])
}
return arr;
} else if(checkType(any) === 'Function') {
return new Function('return '+any.toString()).call(this)
} else if(checkType(any) === 'Date') {
return new Date(any.valueOf())
} else if(checkType(any) === 'RegExp') {
return new RegExp(any)
} else if(checkType(any) === 'Map') {
let m = new Map()
any.forEach((v,k)=>{
m.set(k, clone(v))
})
return m
} else if(checkType(any) === 'Set') {
let s = new Set()
for(let val of any.values()) {
s.add(clone(val))
}
return s
}
return any;
}
function jsonClone(obj){
return JSON.parse(JSON.stringify(obj))
}
js防抖节流
function debounce(fn,delay) {
let timeout = null;
return function() {
clearTimeout(timeout);
timeout = setTimeout(() => {
fn.call(this, arguments);
}, delay);
};
}
function throttle(fn,delay) {
let canRun = true;
return function() {
if(!canRun) {
return;
}
canRun = false;
setTimeout( () => {
fn.call(this, arguments);
canRun = true;
}, delay);
};
}
function throttle(fun, delay) {
let last, deferTimer
return function (args) {
let that = this
let _args = arguments
let now = +new Date()
if (last && now < last + delay) {
clearTimeout(deferTimer)
deferTimer = setTimeout(function () {
last = now
fun.apply(that, _args)
}, delay)
}else {
last = now
fun.apply(that,_args)
}
}
}