【问题标题】:Find element index containing given string part查找包含给定字符串部分的元素索引
【发布时间】:2018-01-29 14:23:13
【问题描述】:

我想在 myArray 中搜索“nana”,它应该返回“banana”元素的索引。

var myArray =["apple","banana","cherry"];

我该怎么做?

我有这个,但也许你有更聪明的方法

for(var i=0;i < myArray.length; i++){

    if(myArray[i].indexOf("nana") !=-1) { return i; }

}

【问题讨论】:

标签: javascript arrays search


【解决方案1】:

如果ES6没有问题,可以使用array.prototype.findIndexstring.prototype.includes

var myArray =["apple","banana","cherry"];
var search= "nana";
var index = myArray.findIndex(el => el.includes(search));
console.log(index);

【讨论】:

  • 谢谢,但我的目标是兼容几乎所有的浏览器
【解决方案2】:

使用findIndex

var input = "nana";
var output = myArray.findIndex( s => s.indexOf( input ) != -1 ); 

演示

var myArray =["apple","banana","cherry"];
var input = "nana";
var output = myArray.findIndex( s => s.indexOf( input ) != -1 );
console.log(output);

【讨论】:

  • @JonasW。如何?我对indexOf 很好。使用includes 发布您自己的答案并告诉我们它如何更好。
  • 我的破解方法是在输入变量var input = "nana "; 之后添加空格。这样,您可以确保您只获得 nana 作为一个单独的词。
【解决方案3】:

您可能有多个元素与该搜索条件匹配,在这种情况下,您可以使用reduce 将它们全部捕获。

var myArray = ['apple', 'banana', 'cherry', 'fenana'];

function finder(arr, str) {
  return arr.reduce((p, c, i) => {
    if (c.includes(str)) p.push(i);
    return p;
  }, []);
}

console.log(finder(myArray, 'nana'));

【讨论】:

  • 这将是有用的信息,可以包含在问题中。
  • 你可以在我帖子的第三行找到问题
  • 没有。关于数组的部分是唯一的。您没有包含该信息:)
【解决方案4】:

所有浏览器都支持以下代码:

for + indexOf

var myArray =["apple","banana","cherry"],
    word= "nana";

for(var i=0; i <= myArray.length; i++){
    if(myArray[i].indexOf(word)>-1)
    {
       console.log(i)
       break;
    }
}

findIndex

您也可以使用 findIndex 并且以下浏览器支持它:

var myArray =["apple","banana","cherry"],
    word= "nana";
console.log(myArray.findIndex( s => s.indexOf( word ) > -1 ))

jQuery » 检查是否存在 grep + indexOf:

var myArray =["apple","banana","cherry"],
    word= "nana";
    
var item = jQuery.grep(myArray, function( a ,i ) {
  if (a.indexOf(word)>-1)
  {
     console.log(i); 
     return a;
  }
})[0];

console.log("Is Exists: " + item!=undefined);
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 与我当前的代码相同(我稍后根据您的要求添加)
  • @Kad,我的回答中包含了 3 种方式。
猜你喜欢
  • 1970-01-01
  • 2018-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
相关资源
最近更新 更多