Javascript - 有没有更好的方法来检查字符串而不是indexOf

时间:2017-01-12 14:27:25

标签: javascript

我使用此代码,我的问题是,如果有更好的方法来检查字符串而不是 indexOf

if(documentFile.ending.indexOf('pdf') > -1 || documentFile.ending.indexOf('PDF') > -1 || documentFile.ending.indexOf('docx') > -1)

4 个答案:

答案 0 :(得分:2)

ES6具有布尔函数。使用:

if ( documentFile.ending.includes('pdf') ) { }

或者正则表达式:

if ( documentFile.ending.match(/your-regex/) { }

示例规范:https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/String/includes

答案 1 :(得分:0)

如果您使用的是ES6,那么您可能需要查看String.prototype.includes

var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be'));       // true

答案 2 :(得分:0)

在ES6中,您可以选择使用"包含"

否则使用正则表达式

if(/pdf/i.test(documentFile.ending)) 

答案 3 :(得分:0)

嗯,indexOf非常快,比使用正则表达式快得多。但是像/pdf$/i.test(str)这样的东西可以让你测试结尾,并且让你不区分大小写。但你可以更精确:

function endsWith(str, ending) {
    return str != null
        && ending != null
        && ending.length <= str.length
        && str.lastIndexOf(ending) === str.length - ending.length;
}

请注意ending.length <= str.length,这样您就不会执行endsWith("", "a")之类的操作并获取true。 :)