设计是品牌无声的形象大使。——<兰德·保罗>
indexOf()
默认情况下,JavaScript
没有包含方法。为了检查字符串中是否存在子字符串或数组中的项,您可以执行以下操作:
1 | var someText = 'javascript rules'; |
但是,让我们看一下这些 Expressjs
代码片段。https://github.com/expressjs/express
例子 /mvc/lib/boot.js
, 参考https://github.com/expressjs/express/blob/2f8ac6726fa20ab5b4a05c112c886752868ac8ce/examples/mvc/lib/boot.js#L26
1 | for (var key in obj) { |
lib/utils.js
, 参考https://github.com/expressjs/express/blob/2f8ac6726fa20ab5b4a05c112c886752868ac8ce/lib/utils.js#L93
1 | exports.normalizeType = function(type){ |
examples/web-service/index.js
, 参考https://github.com/expressjs/express/blob/2f8ac6726fa20ab5b4a05c112c886752868ac8ce/examples/web-service/index.js#L35
1 | // key is invalid |
问题在于 位操作符~
,“位操作符对二进制表示执行操作,但它们返回标准的JavaScript
数值。”
它将 -1
转换为 0
,在JavaScript
中 0
的值为 false
:
1 | var someText = 'text'; |
String.prototype.includes()
ES6
引入了 include()
方法,您可以使用它来确定一个字符串是否包含另一个字符串:
语法:
1 | // searchString 要在此字符串中搜索的字符串。 |
1 | 'something'.includes('thing'); // true |
includes()
方法是区分大小写的。例如,下面的表达式会返回 false
:
1 | 'Blue Whale'.includes('blue'); // returns false |
示例
1 | var str = 'To be, or not to be, that is the question.'; |
Array.prototype.includes()
使用 ECMAScript 2016(ES7)
,甚至可以将以下技术与 Arrays
结合使用:
includes()
方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true
,否则返回 false
。
1 | !!~[1, 2, 3].indexOf(1); // true |
语法
1 | // valueToFind 需要查找的元素值。 |
示例
1 | [1, 2, 3].includes(2); // true |
不幸的是,只有
Chrome,Firefox,Safari 9
或更高版本以及Edge
才支持该功能;不是IE11
或更低版本。 最好在受控环境中使用。
参考
- https://www.jstips.co/en/javascript/even-simpler-way-of-using-indexof-as-a-contains-clause/
- MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/includes
- MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
关注【公众号】,了解更多。
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!