我目前正在使用以下内容:
for (var i = 0; i < x.length; i++)
if (x[i].id === userId)
return x[i].name;
这将返回用户名。
使用 Lo-Dash 是否有更有效的方法来做到这一点?请注意,id 是唯一的,因此如果找到,则无需检查更多。
我目前正在使用以下内容:
for (var i = 0; i < x.length; i++)
if (x[i].id === userId)
return x[i].name;
这将返回用户名。
使用 Lo-Dash 是否有更有效的方法来做到这一点?请注意,id 是唯一的,因此如果找到,则无需检查更多。
使用 _lodash 是否有更有效的方法来执行此操作?
不,没有什么比普通的旧本机for
循环更有效率了。但是你可以用 lodash 用更少的代码来完成它。
您可以使用_.where
(注意它返回一个新数组,而不是一个对象):
return _.where(x, { id: userId})[0];
但它的效率将低于您的代码,因为它在找到第一次出现时不会停止检查。它只是稍微短一点打字。您真的不需要关心简单循环的效率。
var i = x.length;
while ( i--)
if (x[i].id === userId)
{
return x[i].name;
break;
}
这是循环对象数组的最有效方法。首先,您不会在每次迭代时检查数组的长度。其次,当你找到你的物品时,你会打破循环。
编辑:如果你不关心从后面开始的遍历顺序,它会更快。