【发布时间】:2019-01-20 22:15:34
【问题描述】:
我正在为以下问题寻找一个优雅的解决方案:
在我的代码的许多地方,我需要在对象数组中找到一个与 id 匹配的对象,然后返回该对象的属性。引用的 id可能存在也可能不存在在数组中。
我想出的最短解决方案如下:
(如果项目存在则想获取项目的标题,否则不返回)
arrayofObjects = [ { id: 'a3ff3d', title: 'Tesla', color: 'Red' }, { id: 'r43wesd', title: 'AMC', color: 'Rust' }]
wantedObject = { queryTitle: 'Desired Car', id: 'a3ff3d' }
let wantedProperty = arrayOfObjects.some( e => e.id === wantedObject.id) ? arrayOfObjects.find(e => e.id === wantedObject.id).title : 'None Found'
但是,这既不优雅也不高效。我更喜欢它是一个单行而不是一个函数。
【问题讨论】:
-
您应该提供一些示例数据和预期结果。您应该能够使用一次find,而不是some + find。它应该返回一个有用的值,例如 undefined 或 null 其他进程可以使用,而不是随机字符串。
-
“单线”和“高效”很多时候并没有真正齐头并进。与
Array.prototype方法相比,普通的for循环总是会获得更高的性能。 -
去
(array.find(…) || {}).title -
添加了示例数据。是的,我在想我应该能够使用一次 find ,但我正在努力编写它。返回 undefined 或 null 是可以接受的。
-
@PatrickRoberts 不正确,原生数组方法是 just as fast 作为
for循环。
标签: javascript arrays performance