Javascript array.按属性值查找对象

Posted

技术标签:

【中文标题】Javascript array.按属性值查找对象【英文标题】:Javascript array.find object by property value 【发布时间】:2017-09-25 23:58:25 【问题描述】:

a) 下面的方法有什么区别(性能方面)?

b) 这个 (.find) 函数是否遍历数组中的所有对象?

c) 这个函数还有另一种语法吗?

#1 console.log(cres.find(o => o.name === refname));

#2 console.log(cres.find(function(o)return o.name===refname;));

我正在寻找通过大数组中的属性值来查找对象的最有效方法。那么,实现一个自定义函数(即:BTREE)会是更好的方法吗?

谢谢

更新:除了“否决票”。我了解到#1 中的案例只是函数(Es6)的一种奇特符号。所以基本上两种情况都是一样的。

无论如何,它没有解释 .find 函数是否遍历数组中的所有对象,如果是这种情况,自定义实现会更具性能...

【问题讨论】:

jsperf.com测试发现 ***.com/questions/44030645/… @epascarello 没有必要测试,因为我想知道 a) 用于内置函数的方法和 b) 我不了解 es6 标准。所以你的评论和反对票没有多大帮助.... 大声笑,你说你想知道什么更快,所以你可以测试它。我发布的链接告诉你它们是否不同。 如果您阅读 find 的文档,您就会知道它是停止还是搜索全部。 【参考方案1】:

a) / c) 没有区别,选项 1 只是使用 ES6 语法。 你可以在这里查看文档:http://es6-features.org/#ExpressionBodies

b) .find 将遍历数组,直到找到结果然后停止。 Reference

【讨论】:

谢谢。这正是我一直在寻找的。所以现在我有了一个方向。

以上是关于Javascript array.按属性值查找对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中按属性查找数组中的对象?

如何在javascript中按属性查找数组中的对象?

javascript Array将对象属性减少为唯一值

JavaScript对象数组如何按指定属性和排序方

按属性值查找对象索引

JavaScript原生对象属性和方法详解——Array对象