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

Я хочу получить фрукты. Пробовал:Как получить индекс массива, где он содержит строку?

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

Это возвращается 0.

Я ожидал, что он вернется 2, последняя запись Int он массив? Как найти значение массива, которое я хочу?

+0

, так что вы хотите получить индекс массива, который содержит слово fruit? –

+0

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

+0

Просто верните 'qs [j]' .. Если '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, если вы просто хотите, чтобы индекс первого элемента содержал «фрукты» в массиве.

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

qs[j].indexOf('fruit') возвращает позицию «фрукты» в qs[j], вместо позиции qs[j] в qs (который вы хотите).

1

Anywhere в строке:

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().

Смежные вопросы