记录js开发技巧

indexOf

str.indexOf(query) != -1if(str.indexOf(query) >= 0) 可写成: 
if(~str.indexOf(query)) {} 

取整~~

parseInt(-2.991212121) //-2 
~~(-2.92129) //-2 
~~(任何类型) 不是number类型的转为0

补零

const FillZero = (num, len) => num.toString().padStart(len, "0");
const num = FillZero(169, 5);
// num => "00169"

格式化金额

const ThousandNum = num => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
const money = ThousandNum(20190214);

生成星级评价

const StartScore = rate => "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);
const start = StartScore(3);
// start => "★★★"
const startScore = rate => Array(5).fill('★图片路径').concat(Array(5).fill('图片路径')).slice(5 - rate, 10 - rate);

操作URL查询参数

// location.search = "?name=young&sex=male"
const params = new URLSearchParams(location.search.replace(/\?/ig, "")); 
params.has("young"); // true
params.get("sex"); // "male"

精确小数位

const RoundNum = (num, decimal) => Math.round(num * 10 ** decimal) / 10 ** decimal;
const num = RoundNum(1.69, 1);
// num => 1.7

快速获取时间戳

const timestamp = +new Date("2019-02-14");
// timestamp => 1550102400000

判断奇偶

const OddEven = num => !!(num & 1) ? "odd" : "even";
const num = OddEven(2);
// num => "even"

生成范围随机数

const RandomNum = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
const num = RandomNum(1, 10); [1,10]

判断数据类型

// 可判断类型:
// undefined、null、string、number、boolean、array、
// object、symbol、date、regexp、function、asyncfunction、
// arguments、set、map、weakset、weakmap

function DataType(tgt, type) {
    const dataType = Object.prototype.toString.call(tgt).replace(/\[object (\w+)\]/, "$1").toLowerCase();
    return type ? dataType === type : dataType;
}
DataType("young"); // "string"
DataType(20190214); // "number"
DataType(true); // "boolean"
DataType([], "array"); // true
DataType({}, "array"); // false

去重数组

const arr = [...new Set([0, 1, 1, null, null])];
// arr => [0, 1, null]

统计数组相同个数

const arr = [0, 1, 1, 2, 2, 2];
const count = arr.reduce((t, v) => {
    t[v] = t[v] ? ++t[v] : 1;
    return t;
}, {});
// count => { 0: 1, 1: 2, 2: 3 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值