2017-02-21 46 views
0

В javascript есть несколько циклов, в том числе forEach, некоторые, карты и сокращения. Однако из того, что я сейчас понимаю, ни один из них не подходит, если вы хотите перебирать массив и возвращать значение определенного индекса. Похоже, я в значительной степени остался со стандартом для цикла. Это правда?Лучшая петля в javascript, которая позволяет вернуть значение?

Так, например, если у меня есть массив объектов ... и я хотел бы найти индекс элемента с определенным значением ... Могу ли я использовать что-либо, кроме обычного цикла?

+2

['Array.prototype.findIndex()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) – Andreas

+1

'findIndex()' или 'indexOf()' –

+0

, но как насчет массива объектов? Скажем, '[{name: 'foo', age: 23}, {name: 'foo2', age: 34}]'? Как использовать indexOf для поиска? – Grateful

ответ

0

Array.prototype.findIndex(), как это было предложено @Andreas в комментариях.

Вы можете передать функцию findIndex() и определить критерии равенства в этой функции.

Он вернет индекс первого элемента массива, который удовлетворяет критериям равенства, определенным в вашей функции.

-1

Вы можете использовать foreach(), а не обычный для. Это самый простой способ, и вы можете итерации и получить индекс. Для получения дополнительной информации: JavaScript Array forEach() Method

+0

Я не думаю, что у вас есть мой вопрос .... Я уже упоминал о существовании forEach ... однако проблема в том, что я не могу заставить его вернуть значение элемента. – Grateful

+0

Возвращает индекс определенного элемента, который равен значению, правильно? Если вы проверите ссылку, которую я отправил, она возвращает индекс и значение элементов. –

+0

Не имеет значения .... вы не можете вернуть что-либо изнутри периода forEach .... – Grateful

0

Существует также for ... of ...:

for (variable of iterable) { 
    statement 
} 
+0

Это звучит интересно ... но я полагаю, что он пройдет через весь список массивов, независимо от того, нашел ли вы элемент или нет. Это правда? – Grateful

+0

@Grateful - Вы все еще можете «ломать» или «возвращать», как и любой другой простой цикл. – nnnnnn

+0

Вы можете поместить в него оператор 'return', или' break'. –

0

Вы можете использовать библиотеку JavaScript http://underscorejs.org. Он имеет множество функций. для вашей цели вы можете использовать _.indexOf. он будет eturns индекса, при котором значение можно найти в массиве

пример:

var data=[1, 2, 3]; 
var index= _.indexOf(data, 2); 

вне положенного будет 1

+1

Почему вы используете Underscore, когда JS имеет встроенный метод '.indexOf()'? – nnnnnn