如何获取包含字符串的数组的索引?

时间:2016-07-30 03:09:16

标签: javascript

var qs = ["color=green", "pet=dog", "fruit=apple]
我希望得到成果。尝试:

for (var j=0; j<qs.length; j++) {qs[j].indexOf('fruit')}

返回0。

我预计它会返回2,数组中的最后一个条目?如何找到我想要的数组值?

3 个答案:

答案 0 :(得分:1)

你几乎得到它,你需要在索引上做一个中断或创建一个新数组并将具有匹配索引的数组推入该数组

var arr = [];

for (var j=0; j<qs.length; j++) 
{
    if(qs[j].indexOf('fruit')!==-1){
        arr.push(j);
    }
}
//print all the indexes that contain fruit
for(var i in arr)
console.log(arr[i]);

如果您只想要一个索引,请暂停

var matchingIdx=-1;
for (var j=0; j<qs.length; j++) 
{
    if(qs[j].indexOf('fruit')!==-1){
       matchingIdx = j;
       break;
    }
}

如果你想概括一下,可以将它放入一个函数

function gettingMatchingIndexes(qs, target) {
    var arr = [];
    for (var j=0; j<qs.length; j++) 
    {
        if(qs[j].indexOf(target)!==-1){
            arr.push(j);
        }
    }
    return arr;
}

答案 1 :(得分:1)

如果你只想让第一个元素的索引包含&#39; fruit&#39;那么只需返回j在数组中。

function findFirstFruitIndex() {
 for (var j = 0; j < qs.length; j++) {
  if (qs[j].indexOf('fruit') > -1) return j;
 }
}

qs[j].indexOf('fruit')返回&#39; fruit&#39;的位置在qs[j]中,而不是qs[j]qs的位置(您想要的)。

答案 2 :(得分:1)

字符串中的任何位置:

&#13;
&#13;
let qs = ["color=green", "pet=dog", "fruit=apple]"];
let res = qs.findIndex(e => e.includes('fruit'));
console.log(res);
&#13;
&#13;
&#13;

钥匙上的完全匹配:

&#13;
&#13;
let qs = ["color=green", "pet=dog", "fruit=apple]"];
let res = qs.findIndex(e => e.match(/^fruit=/));
console.log(res);
&#13;
&#13;
&#13;

请参阅Array.prototype.findIndex()