自己在编码中,为了方便编码,写的函数代码。
持续不定期更新…
已有函数:
随机数函数:随机n ~ m整数、随机n ~ m内且保留x位小数点的数
常用数组对象遍历:filter遍历、some()遍历,$.each()遍历、for循环遍历、forEach循环遍历
判断对象是否为空对象将字符串转化为json、for in 循环判断、Object.keys()方法
随机数函数
在自己写demo的时候,demo要求要有一些数据,让demo看起来“真实”一点,这时候就得在数据上随机一点啦,普通的随机可能满足不了,就写了这个随机函数。
- 随机(n,m)整数 :随机生成范围内整数数值
/**
* 随机数生成[整数]
* @param {*} lower 最小值
* @param {*} upper 最大值
*/
function random (lower, upper) {
return Math.floor(Math.random() * (upper - lower)) + lower;
},
- 随机带N位小数: 随机数进阶版,可以带0位小数,即整数
/**
* 随机数生成
* @param {*} lower 最小值
* @param {*} upper 最大值
* @param {*} decimal 保留小数点位数
*/
function random(lower, upper, decimal) {
var times = decimal ? Math.pow(10, decimal) : 1;//10的n次方
return ((Math.floor(Math.random() * (upper * times - lower * times)) + lower * times) / times).toFixed(decimal);
}
常用数组对象遍历
1.filter()遍历:不会改变原始数组
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
data.filter((i,k)=>{
//var str =`${i.name} ${i.data}%`;
console.log(i.name,i.data) //do something
});
2.some()遍历:JS提供的方法
语法为:array.some(function(currentValue,index,arr),thisValue)
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
data.some((i)=>{
console.log(i.name,i.data) //do something
});
3.$.each()遍历
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
$.each(data , (k, j) => {
console.log(i.name,i.data) //do something
})
4.for循环遍历:使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
for(i = 0,len=data.length; i < len; i++) {
console.log(data[i].name,data[i].data) //do something
}
5.forEach循环遍历:遍历数组中的每一项,没有返回值,对原数组没有影响,不支持IE
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
data.forEach((item,index,array)=>{
console.log(item.name,item.data) //do something//执行代码
})
判断对象是否为空对象
1.将字符串转化为json,再判断该字符串是否为"{}";
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
function emptyObj(data){
return JSON.stringify(data) == "{}";
}
2.for in 循环判断
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
function emptyObj(data){
for(var key in data) {
return false;
}
return true;
}
3.使用ES6的Object.keys()方法
/**
* @param {*} data 数组对象 [{name:1,data:76},{name:2,data:66}]
*/
function emptyObj(data){
if (!Object.keys(data).length) {//有数据
return false;
}
return true;
}
数组污染问题
使用concat()方法
该方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
var data =[{name:1,data:76},{name:2,data:66}]; //原数组
var test=data.concat();//这样随意操作test就不会影响到原数组gold了
test.push({name:2,data:33});//do somethng
以固定文字开头和固定文字结尾,获取全部或者中间内容
使用match()方法【按需使用】
//"内容".match(/(开头字段(.*)结尾字段).*?/g)
let a = "欢迎CC光临";
console.log(a.match(/(欢迎(.*)光临).*?/g))
//当匹配时,打印的是一个数组,数组长度为1
// [“欢迎CC光临”];
console.log(a.match(/欢迎(\S*)光临/))
//当匹配时,打印的是一个数组,数组长度为2
//[“欢迎CC光临”,"CC"]
检测数值或字符串中是否包含某一个元素
1.indexOf
返回的是数值类型(下标),不能判断数组中是否含有NaN
2.includes
返回的是布尔类型,可以判断数组中是否含有
//数组
let a = [1,NaN,2,"dad"];
console.log(a.indexOf("dad"))// 3
console.log(a.indexOf("dad1"))//-1
console.log(a.indexOf(NaN))//-1
console.log(a.includes("dad")) //true
console.log(a.includes("dad1")) //false
console.log(a.includes(NaN))//true
//字符串
let b="weewreuueriereredadNaN";//含有NaN字样
console.log(b.indexOf("dad"))// 16
console.log(b.indexOf("dad1"))// -1
console.log(b.indexOf(NaN))// 19 此时解析成字符串NaN
console.log(a.includes("dad")) //true
console.log(a.includes("dad1")) //false
console.log(a.includes(NaN))//true 此时解析成字符串NaN