javascript数组|如果值包含字符串,则返回索引

javascript数组|如果值包含字符串,则返回索引,javascript,arrays,Javascript,Arrays,我有一个字符串数组stringsArr,还有一个字符串myString。我想找到数组的第一个索引,其值为euqalmyString或包含myString 我知道indexOf()方法,但不幸的是,只有当value等于myString时,它才起作用。我在谷歌上搜索了文档,但没有找到任何合适的内容,所以决定在这里询问我是否遗漏了一些内容。您想使用和自定义谓词,如: stringsArr.findIndex(function (str) { return (str === myString ||

我有一个字符串数组
stringsArr
,还有一个字符串
myString
。我想找到数组的第一个索引,其值为euqal
myString
或包含
myString

我知道indexOf()方法,但不幸的是,只有当value等于
myString
时,它才起作用。我在谷歌上搜索了文档,但没有找到任何合适的内容,所以决定在这里询问我是否遗漏了一些内容。

您想使用和自定义谓词,如:

stringsArr.findIndex(function (str) {
  return (str === myString || str.indexOf(myString) > -1);
});
如果您使用的环境(/browser)不提供
findIndex
,MDN页面将包含一个很好的短polyfill。

您要使用的自定义谓词,如:

stringsArr.findIndex(function (str) {
  return (str === myString || str.indexOf(myString) > -1);
});

如果您使用的环境(/browser)不提供
findIndex
,MDN页面将包含一个漂亮的短多边形填充。

indexOf
可能是您想要的,但在字符串上使用indexOf:

var tested = ['foot','bark', 'foo','cat'];
var match = 'foo';
for(var i = 0; i < tested.length; i++)
    if(tested[i].indexOf(match) > -1) console.log(i);
var tested=['foot','bark','foo','cat'];
变量匹配='foo';
对于(变量i=0;i-1)console.log(i);
这将输出0和2

要获取实际索引,请执行以下操作:

var tested = ['foot','bark', 'foo','cat'];
var match = 'foo';
var index = -1;
for(var i = 0; i < tested.length; i++) {
    if(tested[i].indexOf(match) > -1) {
       index = i;
       break;
    }
} 

console.log(index); // 0, as "foot" includes "foo".
var tested=['foot','bark','foo','cat'];
变量匹配='foo';
var指数=-1;
对于(变量i=0;i-1){
指数=i;
打破
}
} 
console.log(索引);//0,因为“foot”包括“foo”。

indexOf
可能是您想要的,但是在字符串上使用indexOf:

var tested = ['foot','bark', 'foo','cat'];
var match = 'foo';
for(var i = 0; i < tested.length; i++)
    if(tested[i].indexOf(match) > -1) console.log(i);
var tested=['foot','bark','foo','cat'];
变量匹配='foo';
对于(变量i=0;i-1)console.log(i);
这将输出0和2

要获取实际索引,请执行以下操作:

var tested = ['foot','bark', 'foo','cat'];
var match = 'foo';
var index = -1;
for(var i = 0; i < tested.length; i++) {
    if(tested[i].indexOf(match) > -1) {
       index = i;
       break;
    }
} 

console.log(index); // 0, as "foot" includes "foo".
var tested=['foot','bark','foo','cat'];
变量匹配='foo';
var指数=-1;
对于(变量i=0;i-1){
指数=i;
打破
}
} 
console.log(索引);//0,因为“foot”包括“foo”。

您忘了提到-es2015。这是一个不错的解决方案,但对于太多的浏览器仍然不起作用:)下一个项目将使用babel编写,因此将使用它来sure@Kania检查MDN页面中的polyfill。您可以将
findIndex
添加到所有当前浏览器中,并在今天使用它。不幸的是,在现有代码中,添加多边形填充不是一个选项:D期待新项目!感谢您展示此解决方案!您忘了提到-es2015。这是一个不错的解决方案,但对于太多的浏览器仍然不起作用:)下一个项目将使用babel编写,因此将使用它来sure@Kania检查MDN页面中的polyfill。您可以将
findIndex
添加到所有当前浏览器中,并在今天使用它。不幸的是,在现有代码中,添加多边形填充不是一个选项:D期待新项目!感谢您展示此解决方案!我在寻找'foobar'和'foo',但indexOf只返回'foo'很好,谢谢,但我自己的解决方案我已经有了,问题是关于JavaScript解决方案中存在的,就像前面提到的findIndex()。我在寻找'foobar'和'foo',但indexOf只返回'foo'很好,谢谢,但我自己的解决方案我已经有了,问题是关于JavaScript解决方案中存在的问题,如前面提到的findIndex()。