js中的小技巧

1. 类型强制转换

1.1 使用Boolean过滤数组中的所有假值

我们知道JS中有一些假值:false, null, 0, “”, undefined, NaN,怎样把数组中的假值快速过滤呢,可以使用Boolean构造函数来进行一次转换

const compact = arr => arr.filter(Boolean)
compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN,'s', 34])// [ 1, 2, 3, 'a', 's', 34 ]

1.2 双位运算符 ~~

可以使用双位操作符来替代正数的 Math.floor(),替代负数的 Math.ceil()。双否定位操作符的优势在于它执行相同的操作运行速度更快。

Math.floor(4.9) === 4      //true
// 简写为:
~~4.9 === 4      //true

不过要注意,对正数来说 ~~ 运算结果与 Math.floor() 运算结果相同,而对于负数来说与 Math.ceil()的运算结果相同:

~~4.5                // 4

Math.floor(4.5)      // 4

Math.ceil(4.5)       // 5

~~-4.5                // -4
Math.floor(-4.5)     // -5

Math.ceil(-4.5)      // -4

1.3 取整 | 0

对一个数字 |0可以取整,负数也同样适用, num|0

1.3 | 0         // 1
-1.3 | 0         // -1

1.4 判断奇偶数 &1

对一个数字 &1可以判断奇偶数,负数也同样适用, num&1

const num=3;

!!(num & 1)                    // true

!!(num % 2)                    // true

2. 数组

2.2 统计数组中相同项的个数

很多时候,你希望统计数组中重复出现项的个数然后用一个对象表示。那么你可以使用reduce方法处理这个数组。
下面的代码将统计每一种车的数目然后把总数用一个对象表示。

var cars = ['BMW','Benz', 'Benz', 'Tesla', 'BMW', 'Toyota'];
var carsObj = cars.reduce(function (obj, name) {
  obj[name] = obj[name] ? ++obj[name] : 1;  
return obj;
}, {});
carsObj; // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }

//之后有了在补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值