2016-07-30 11 views
-1
var qs = ["color=green", "pet=dog", "fruit=apple] 

私は果物を手に入れたいです。試しました:私はそれは、彼の配列int型の最後のエントリを2を返すことが期待される0文字列を含む配列のインデックスを取得するにはどうすればよいですか?

を返さ

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

こと?どのアレイ値が私が望むものであるかをどのように見つけるか?あなたはほとんどそれを得た

+0

したがって、fruitという語を含む配列のインデックスを取得しますか? –

+0

'qs.findIndex(s => s.includes( 'fruit'))'です。 –

+0

'indexOf> -1'の場合 – Rayon

答えて

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; 
} 
+0

OPは 'array'を期待していませんが' index' – Rayon

+0

@Rayon right、これは配列に入れるのではなく、見つけたときにただ一つだけを探したい場合は一致するすべてのインデックスの配列です – konkked

+0

大変ありがとうございます。 –

1

だけ再jにすると、最初の要素のインデックスに配列の 'fruit'が含まれていればいいだけです。

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

qs[j].indexOf('fruit')qs[j]の「フルーツ」の位置、代わりに(したい)qsqs[j]の位置を返します。

1

どこでも文字列で:キーの

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

完全一致:

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

Array.prototype.findIndex()を参照してください。

関連する問題