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

Javascript-有没有更好的方法来检查字符串而不是indexOf,javascript,Javascript,我使用这段代码,我的问题是,是否有比indexOf更好的方法来检查字符串: if(documentFile.ending.indexOf('pdf') > -1 || documentFile.ending.indexOf('PDF') > -1 || documentFile.ending.indexOf('docx') > -1) ES6具有布尔函数。使用: if ( documentFile.ending.includes('pdf') ) { } 或适用于正则表达式

我使用这段代码,我的问题是,是否有比indexOf更好的方法来检查字符串:

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

ES6具有布尔函数。使用:

if ( documentFile.ending.includes('pdf') ) { }
或适用于正则表达式:

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

示例规范:

ES6具有布尔函数。使用:

if ( documentFile.ending.includes('pdf') ) { }
或适用于正则表达式:

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

规范示例:

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


如果您正在使用ES6,那么您可能需要查看


在ES6中,您可以更好地选择使用“包括”

否则使用正则表达式

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

在ES6中,您可以更好地选择使用“包括”

否则使用正则表达式

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

嗯,
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;
}
函数endsWith(str,ending){
返回str!=null
&&结束!=null

&&ending.length嗯,
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;
}
函数endsWith(str,ending){
返回str!=null
&&结束!=null

&&ending.length是的,你在ES6中有它。或者如果(/pdf/i.test(documentFile.ending))你可以使用正则表达式来做这件事,如果(/pdf/i.test(documentFile.ending))我也在想正则表达式:/pdf/.test(documentFile.ending)请定义“更好”。什么更好?indexOf
有什么问题?是的,你在ES6中有它。或者如果(/pdf/i.test(documentFile.ending))你可以使用正则表达式来做这件事我也在考虑regex:/pdf/.test(documentFile.ending)请定义“更好”。在什么方面更好?
indexOf
有什么问题?@Orangesandlemons没有。你看过
String.prototype.includes
的polyfill吗?抱歉,与String.includes/indexOf和array.includes/indexOf混淆了。删除了原件comment@Orangesandlemons不,不是。你看过
String.prototype的polyfill吗。includes
?很抱歉,与string.includes/indexOf和array.includes/indexOf混淆。已删除原始注释