2016-06-24 6 views
1

Я пытаюсь получить значение числового значения внутри array1 с помощью индекса array2. Так, например, мои массивы выглядеть следующим образом:Получите значение одного массива в соответствии с другим индексом массивов

const array1 = ["3","4","5","6","7","8"]; 
const array2 = ["bat","cat","dog","fish","cow","bird"]; 

Если пользователь выбирает "cat", он должен захватить "4".

array2.forEach(animal => { 
    console.log(array1.indexOf(animal)); // returns -1 
}); 

Как это сделать?

ответ

3

Pass текущий индекс array2 в forEach обратного вызова (второй аргумент)

const array1 = ["3","4","5","6","7","8"]; 
 
const array2 = ["bat","cat","dog","fish","cow","bird"]; 
 

 
array2.forEach((animal, i) => { 
 
    console.log(array1[i]); 
 
});

+0

Понравилась ли вам благодарность за помощь: D – Modelesq

3

Просто используйте кронштейн обозначения и indexOf

const array1 = ["3","4","5","6","7","8"]; 
 
const array2 = ["bat","cat","dog","fish","cow","bird"]; 
 

 
let choice = 'cat'; // user selection 
 

 
let result = array1[array2.indexOf(choice)]; // grab value 
 

 
alert(result);

+0

Nice. Я полностью упустил контекст «выбора пользователя» и просто смотрел на проблему цикла. +1 – KevBot

+0

Вы не должны использовать let, так как вопрос не дает информации достаточно, чтобы определить функцию или область действия, используйте var вместо этого в примерах кода, если у вас недостаточно информации :) все еще +1 для приятного улова по проблеме –

+0

@MikaelPuusaari - OP использует 'const', поэтому давайте предположим, что он знает разницу между' let', 'var' и' const'. – adeneo

0

Ваш код нуждается в некоторых изменениях.

Есть два условия, как я понял. Первый - вы получаете имя животного и ищите соответствующий индекс в массиве1. Во-вторых, вы делаете цикл на array2, и вы получаете связанные элементы в array1.

//First condition 
var animalName = 'XXX'; // You get this from the user. 
var indexOfAnimal = array2.indexOf(animalName); 
var relatedItem = array1[indexOfAnimal]; 

//Second condition 
foreach(var index in array2){ 
    console.log(array1[index]); 
} 

//Your code with changes 
array2.forEach(animal => { 
    var indexOfAnimal = array2.indexOf(animal); 
    console.log(array1[indexOfAnimal]); 
}); 
Смежные вопросы