更简单的使用indexOf实现contains功能
JavaScript并未提供contains方法。检测子字符串是否存在于字符串或者变量是否存在于数组你可能会这样做:
1 | var someText = 'javascript rules'; |
但是让我们看一下这些 Expressjs代码段。
1 | for (var key in obj) { |
1 | exports.normalizeType = function(type){ |
1 | // key is invalid |
难点是 位操作符 ~, “按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。”
它将-1
转换为0
,而0
在javascript为false
,所以:
1 | var someText = 'text'; |
String.prototype.includes()
在ES6中提供了includes() 方法供我们判断一个字符串是否包含了另一个字符串:
1 | 'something'.includes('thing'); // true |
在ECMAScript 2016 (ES7)甚至可能将其应用于数组,像indexOf一样:
1 | !!~[1, 2, 3].indexOf(1); // true |
不幸的是, 只有Chrome、Firefox、Safari 9及其更高版本和Edge支持了这功能。IE11及其更低版本并不支持
最好在受控的环境中使用此功能
原文作者: anhr
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)