0

我目前正在使用以下内容:

   for (var i = 0; i < x.length; i++)
      if (x[i].id === userId)
         return x[i].name;

这将返回用户名。

使用 Lo-Dash 是否有更有效的方法来做到这一点?请注意,id 是唯一的,因此如果找到,则无需检查更多。

4

2 回答 2

0

使用 _lodash 是否有更有效的方法来执行此操作?

不,没有什么比普通的旧本机for循环更有效率了。但是你可以用 lodash 用更少的代码来完成它。

您可以使用_.where(注意它返回一个新数组,而不是一个对象):

return _.where(x, { id: userId})[0];

但它的效率将低于您的代码,因为它在找到第一次出现时不会停止检查。它只是稍微短一点打字。您真的不需要关心简单循环的效率。

于 2014-01-23T10:18:40.523 回答
0
var i = x.length;

while ( i--)
  if (x[i].id === userId)
  {
     return x[i].name;
     break;
  }

这是循环对象数组的最有效方法。首先,您不会在每次迭代时检查数组的长度。其次,当你找到你的物品时,你会打破循环。

编辑:如果你不关心从后面开始的遍历顺序,它会更快。

于 2014-01-23T10:19:16.813 回答