网站首页 > 技术文章 正文
主要收集一些不太常见的简写及数据处理方式,不一定是最好的,但一定是最骚的。
运算符的妙用
1. 返回时间戳
服用说明:会调用 Date.prototype 上的 valueOf 方法,而根据 MDN ,Date.prototype.value 方法等同于 Date.prototype.getTime() 。
+ new Date(); // 1569746722417
2. 数字字符串转换成数值
服用说明:类似于toNumber()的效果
+ "42"; // 42
+ "010"; // 10
+ "0x10"; // 16
+ "NaN"; // NaN
3. 按位运算符“~”的使用
服用说明:反转操作数的比特位,即0变成1,1变成0。类似于-(value+1)
!~[1, 2, 3].indexOf(1); // false
!~[1, 2, 3].indexOf(2); // false
!~[1, 2, 3].indexOf(3); // false
!~[1, 2, 3].indexOf(4); // true
!~[1, 2, 3].indexOf(5); // true
4. 短路运算符“&&”“||”返回值
服用说明:基于Boolean类型判断是否返回后续的值
let num1 = true && 3; // 3
let num2 = false && 3; // false
let num3 = true || 3; // true
let num4 = false || 3; // 3
数组去重
1. 一行代码去重
服用说明:使用扩展运算符(...),配合Set(它类似于数组,但是成员的值都是唯一的,没有重复的值)
[...new Set([1, 2, 1, 1, 3, "3"])]; // [ 1, 2, 3, '3' ]
2. 使用filter去重
服用说明:主要是利用filter的第三个参数(对象本身),配合下标查找返回当前首个查找到的下标元素。MDN参考链接
[1, 2, 1, 1, 3, "3"].filter(function(item, index, arr) {
return arr.indexOf(item) === index;
}); // [ 1, 2, 3, '3' ]
数组求值
1. 求取最大/小值
服用说明:使用apply接受一个数组对象进行操作,或者使用扩展运算符(...)展开数组
Math.max.apply(null, [1,2,3,4]); // 4
Math.min.apply(null, [1,2,3,4]); // 1
// 变形
Math.max(...[1,2,3,4]); // 4
Math.min(...[1,2,3,4]); // 1
2. 数组求和
服用说明:使用reduce,MDN参考链接;
[1,2,3,4].reduce(function(pre, next) {
return pre + next;
}, 0); // 10
数组优化
1. 使用push替换concat
服用说明:concat 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。也就是说每次在内存中都会有新增销毁数组的过程。Array.prototype.push.apply 不会创建新的数组,是对原有数组基础上的添加,参考掘金译文链接;
[1,2,3,4].concat([5,6]); // [1,2,3,4,5,6]
Array.prototype.push.apply([1,2,3,4], [5,6])); // [1,2,3,4,5,6]
2. 去除数组中的假值(null,undefined, "")
服用说明:使用filter过滤,通过布尔值转化,返回false去除。
['', undefined, null, '1', 2, 3].filter(Boolean); // ["1", 2, 3]
- 上一篇: web前端必考的面试题
- 下一篇: 你不一定了解的最新JS知识点
猜你喜欢
- 2024-11-21 浅析GIF 格式图片的存储与解析
- 2024-11-21 如何用2 KB代码实现3D赛车游戏?2kPlus Jam大赛了解一下
- 2024-11-21 快速了解ES6的代理与反射
- 2024-11-21 「实战」蘑菇街 PC 端首页,瀑布流布局的实现原理与细节技巧
- 2024-11-21 Knative 驾驭篇:带你 '纵横驰骋' Knative 自动扩缩容实现
- 2024-11-21 ECMAScript 6使用教程总结
- 2024-11-21 一道二进制子串算法,让面试官都解不出来?
- 2024-11-21 高级前端进阶,为什么要使用call、apply、bind?
- 2024-11-21 碎片时间学编程「202]:分组数组元素
- 2024-11-21 从入门到入土:Lambda完整学习指南,包教包会(上)
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-