2017-02-21 81 views
0

JavaScript中有幾個循環,包括forEach,some,map和reduce。但是,從我目前所瞭解的情況來看,如果您想遍歷數組並返回特定索引的值,則這些都不適合。看起來好像我只剩下循環的標準。真的嗎?在javascript中允許返回值的最佳循環?

所以,例如,如果我有一個對象數組...我想找到具有特定值的項目的索引...我可以使用除常規for循環以外的任何東西嗎?

+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()而不是常規for.It是最簡單的,您可以迭代並獲取索引。欲瞭解更多信息:JavaScript Array forEach() Method

+0

我不認爲你得到我的問題....我已經提到了forEach的存在...但是,問題是我無法得到它返回項目價值。 – Grateful

+0

返回等於該值的特定元素的索引,對嗎?如果您檢查我發送的鏈接,它將返回元素的索引和值。 –

+0

沒關係....你不能在forEach ...期間返回任何東西。 – Grateful

0

也有for ... of ...

for (variable of iterable) { 
    statement 
} 
+0

這聽起來很有趣......但我想它會遍歷整個數組列表,無論您是否找到了某個項目。真的嗎? – Grateful

+0

@Grateful - 你仍然可以'break'或'return',就像任何其他簡單的循環一樣。 – nnnnnn

+0

你可以在裏面放一個'return'語句,或者'break'它。 –

0

您可以使用JavaScript庫http://underscorejs.org。它有很多功能。爲了您的目的,您可以使用_.indexOf。它將eturns在該值可以在陣列中找到的索引

例如:

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

出放將爲1

+1

當JS有一個內建的'.indexOf()'方法的數組時,爲什麼要使用Underscore? – nnnnnn