位运算符~的hack用法

如何用更少的代码判断数组中是否存在某值?

1
2
3
const arr = [1,2,3,4,5,6,7];

~arr.indexOf(2); // true

等同于

1
arr.indexOf(2) !== -1

因为~(位异或)对任何数字相当于-(a + 1)

ES6 的新方法

1
2
3
const arr = [1,2,3,4,5,6,7];

arr.includes(2); // true