2017-02-21 70 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