JS的函数常备小方法/小tip【自留】

自己在编码中,为了方便编码,写的函数代码。
持续不定期更新…
已有函数:
随机数函数:随机n ~ m整数、随机n ~ m内且保留x位小数点的数
常用数组对象遍历:filter遍历、some()遍历,$.each()遍历、for循环遍历、forEach循环遍历
判断对象是否为空对象将字符串转化为json、for in 循环判断、Object.keys()方法

随机数函数

在自己写demo的时候,demo要求要有一些数据,让demo看起来“真实”一点,这时候就得在数据上随机一点啦,普通的随机可能满足不了,就写了这个随机函数。

  1. 随机(n,m)整数 :随机生成范围内整数数值
/**
 * 随机数生成[整数]
  * @param {*} lower 最小值
  * @param {*} upper 最大值
  */
   function random (lower, upper) {
       return Math.floor(Math.random() * (upper - lower)) + lower;
   },
  1. 随机带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

JS Array对象传送门

以固定文字开头和固定文字结尾,获取全部或者中间内容

使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值