2016-05-06 4 views
-1

Допустим, у нас есть массив «myArray», и мы хотим перебрать его, используя for..of. Мы ищем конкретное значение, и когда мы его находим, мы хотим вернуть индекс, где было значение. Итак, у меня есть следующее:Для ... es6 - как насчет получения индекса?

var myArray=[1,2,3,4,5]; 
for (let item of myArray) { 
    if (item===3) { 
     //return index? 
    } 
} 

Есть ли способ получить индекс? Благодарю.

+0

Это вопрос легко ответить на [быстрый поиск в Интернете] (https://www.google.co.il/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8# q = js% 20index% 20of% 20item% 20in% 20array) – OzW

+1

Если целью является индекс, почему бы просто не использовать простой цикл 'for'? Или для каждого? – Dom

+2

OzW спасибо за ваш ответ, я предполагаю, что вы проголосовали за вопрос. Тем не менее, я не спрашиваю, как это сделать в период JavaScript, я спрашиваю, как это сделать с помощью нового 'for ... of'. Знаешь, изучая что-то новое. – uglycode

ответ

2

Он не выходит из коробки, но вы можете использовать новый Array.prototype.entries(), который возвращает итератор index-value пара:

for (const [index, value] of myArray.entries()) { 
    // ... 
} 

В качестве альтернативы вы можете использовать новый Array.prototype.findIndex(), который принимает предикат и возвращает индекс первого элемента, который соответствует ему. Например:

myArray.findIndex(v => v > 10); // would return an index of a first value 
           // that is greater than 10 
Смежные вопросы