javascript中的indexOf与if判断的优雅写法

indexOf 在 js 中的两个方法 Array.prototype.indexOf()String.prototype.indexOf()

这两方法都是查找一个给定元素的第一个索引,如果不存在,则返回 -1。

这儿的 -1 可以利用位运算符优化,从而写出更优雅的 indexOf 写法。

常规 indexOf 与 if 判断写法

1
2
3
4
5
if('112233'.indexOf('22')>-1) {
console.log('找到二货');
} else {
console.log('嗯,没找到二货');
}

以上代码是否是你平时在写 js 逻辑时最常用写法。

运用位预算符取反,其实还有简洁的写法,如下:

加入取反位运算符

1
2
3
4
5
if(~'112233'.indexOf('22')) {
console.log('找到二货');
} else {
console.log('嗯,没找到二货');
}

原理:-1 取反为 0 , 0 在 if 判断里面为 false

加入三元运算符再次优化

1
console.log(~'112233'.indexOf('22') ? '找到二货' : '嗯,没找到二货')

总结:以上代码在团队合作中不建议使用,毕竟代码是大家一起维护,这种遇到新手,不一定能一眼看懂。代码是给人读的,机器读的代码交给 uglify 。不过个人项目使用下毫无问题的。

本文由 linx(544819896@qq.com) 创作,采用 CC BY 4.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。本文链接为: https://blog.jijian.link/2020-03-23/js-index-of/

如果您觉得文章不错,可以点击文章中的广告支持一下!