Tengo una matriz de objetos, donde busco una propiedad booleana, necesito obtener la última de la matriz de objetos que es verdadera y necesito obtener la propiedad de nombre.
Esto es lo que he hecho, ¿hay algún enfoque mejor o una forma sencilla de lograrlo?
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)Puede lograr esto aplicando primero reverse y luego usando find , que devolverá el primer elemento que corresponde a la condición que especifique.
Tenga en cuenta que probablemente desee aplicar el método inverso en una copia de una cadena y no en el original, por lo que es mejor usar [...a] como comentó hjrshng a continuación.
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) Tenga en cuenta también que, en un futuro próximo, podrá utilizar findLast y findLastIndex , que actualmente se encuentran en la etapa 3: https://github.com/tc39/proposals