【问题标题】:Extract the last item which matches the condition提取符合条件的最后一项
【发布时间】:2022-01-19 13:44:23
【问题描述】:

我有一个对象数组,我正在检查一个布尔属性,我需要从对象数组中获取最后一个为 true 的对象,并且需要获取 name 属性。

这就是我所做的,有没有更好的方法或简单的方法来实现这一点:

const a = [{is_done: true, name: 'a'}, {is_done: true, name: 'b'}, {is_done: false, name: 'c'}]


let output = a.filter(a => a.is_done).slice(-1)[0].name


console.log(output)

【问题讨论】:

标签: javascript arrays find-last


【解决方案1】:

您可以通过首先应用reverse 然后使用find 来实现此目的,这将返回与您指定的条件相对应的第一项。

请注意,您可能希望将 reverse 方法应用于字符串的副本而不是原始字符串,因此最好使用 [...a] 作为 hjrshng 在下面评论。

const a = [{is_done: true, name: 'a'}, {is_done: true, name: 'b'}, {is_done: false, name: 'c'}]

const res = [...a].reverse().find(x => x.is_done);

console.log(res.name)

另请注意,在不久的将来,您将能够使用目前处于第 3 阶段的 findLastfindLastIndex - https://github.com/tc39/proposals

【讨论】:

  • reverse() 将改变原始数组,你应该写[...a].reverse()
  • 感谢@hjrshng 的评论。我会修改我的答案
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多