前端日常工作中常用开发小技巧 ---JavaScript
2024-09-07 17:20:57
1.格式化金钱值
const ThousandNum = num => num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
const money = ThousandNum(20190214);
// money => "20,190,214"
2.取整 代替正数的 Math.floor()
,代替负数的 Math.ceil()
const num1 = ~~ 1.69;
const num2 = 1.69 | 0;
const num3 = 1.69 >> 0;
// num1 num2 num3 => 1 1 1
3.转数值 只对 null
、""
、false
、数值字符串
有效
const num1 = +null;
const num2 = +"";
const num3 = +false;
const num4 = +"169";
// num1 num2 num3 num4 => 0 0 0 169
4.精确小数
const RoundNum = (num, decimal) => Math.round(num * 10 ** decimal) / 10 ** decimal;
const num = RoundNum(1.69, 1);
// num => 1.7
5.取最小最大值
const arr = [0, 1, 2];
const min = Math.min(...arr);
const max = Math.max(...arr);
// min max => 0 2
6.是否为空对象
const obj = {};
const flag = DataType(obj, "object") && !Object.keys(obj).length;
// flag => true
7.判断数据类型
function DataType(tgt, type) {
const dataType = Object.prototype.toString.call(tgt).replace(/\[object (\w+)\]/, "$1").toLowerCase();
return type ? dataType === type : dataType;
}
DataType("liner"); // "string"
DataType(2020630); // "number"
DataType(true); // "boolean"
DataType([], "array"); // true
DataType({}, "array"); // false
8.克隆数组
const _arr = [0, 1, 2];
const arr = [..._arr];
// arr => [0, 1, 2]
9.合并数组
const arr1 = [0, 1, 2];
const arr2 = [3, 4, 5];
const arr = [...arr1, ...arr2];
// arr => [0, 1, 2, 3, 4, 5];
10.去重数组
const arr = [...new Set([0, 1, 1, null, null])];
// arr => [0, 1, null]
11.截断数组
const arr = [0, 1, 2];
arr.length = 2;
// arr => [0, 1]
12.交换赋值
let a = 0;
let b = 1;
[a, b] = [b, a];
// a b => 1 0
13.克隆对象
const _obj = { a: 0, b: 1, c: 2 }; // 以下方法任选一种(本人偏爱第一种,简单明了,与克隆数组几乎一样)
const obj = { ..._obj };
const obj = JSON.parse(JSON.stringify(_obj));
// obj => { a: 0, b: 1, c: 2 }
14.合并对象
const obj1 = { a: 0, b: 1, c: 2 };
const obj2 = { c: 3, d: 4, e: 5 };
const obj = { ...obj1, ...obj2 };
// obj => { a: 0, b: 1, c: 3, d: 4, e: 5 }
为什么 obj 不是 {a:0,b:1,c:2,d:4,e:5} 而是上面结果 下面相同的例子就可以说明
最新文章
- HBASE 安装法
- 【Android】不依赖焦点和选中的TextView跑马灯
- android 读取根目录下的文件或文件夹
- 嵌入式Linux驱动学习之路(六)u-boot启动内核
- 将excel文件中的数据导入到mysql
- 重构if...else...或者switch程序块
- eclipse中的Console控制台视图脱离主窗口解决办法
- 【HTML/XML 9】XML中的DTD文件
- Samba 4.x.x全版本存在命令执行漏洞
- Java集群优化——dubbo+zookeeper构建高可用分布式集群
- poj 3687 Labeling Balls【反向拓扑】
- Sql server中Collation conflict问题
- codeforces 316F3 Suns and Rays
- 迷你 MVC
- [国嵌攻略][052][NandFlash驱动设计_读]
- Java容器:Map
- [翻译]一个新式的基于文本的浏览器 Browsh
- caffe---mnist数据集训练与测试
- locked (a oracle.jdbc.driver.T4CConnection
- 8-2 Building for UN Uva1605
热门文章
- JAVASE(十五) 泛型 :泛型用例、自定义泛型类、通配符
- Spring Boot笔记(二) springboot 集成 SMTP 发送邮件
- Java实现 LeetCode 826 安排工作以达到最大收益(暴力DP)
- Java实现 LeetCode 535 TinyURL 的加密与解密(位运算加密)
- Java实现 LeetCode 345 反转字符串中的元音字母
- Java实现选号码
- Java实现蓝桥杯单位转换
- Java实现 LeetCode 96 不同的二叉搜索树
- 2018年全国多校算法寒假训练营练习比赛(第二场)H-了断局
- Spring事务的传播属性