¿Cómo puedo tener el último elemento de la lista en caso de que sea un éxito?
children: [ { case: "no-success", name: "bruno", endOffset: 5 }, { case: "no-success", name: "pippo", endOffset: 5 } { case: "success", name: "jo", endOffset: 5 }, { case: "success", name: "Matteo", endOffset: 5 }, { case: "np-success", name: "Robert", endOffset: 5 } ]Necesito tener el artículo cuyo nombre es Matteo.
Ejemplo para tener el primero que hago: var foundIdx = this.newListWords[i].children.find(item => item.case === 'success').
Definición:
El método find() devuelve el PRIMER elemento de la matriz proporcionada que satisface la función de prueba proporcionada. Si ningún valor satisface la función de prueba, se devuelve undefined.
Puede invertir la matriz:
this.newListWords[i].children.reverse().find(item => item.case === 'success')O puede usar el filtro y obtener el último hijo
const filtered = this.newListWords[i].children.filter(item => item.case === 'success') const lastFind = filtered[filtered.length-1]function lastSuccess(list: any[]): any { const SUCCESS_STRING = 'success'; const [lastItem] = list // Take the list's head .filter(o => o.success === SUCCESS_STRING) // Filter for success .reverse(); // Reverse the list return lastItem; } const item = lastSuccess(this.newListWords[i].children); var children = [ { case: "no-success", name: "bruno", endOffset: 5 }, { case: "no-success", name: "pippo", endOffset: 5 }, { case: "success", name: "jo", endOffset: 5 }, { case: "success", name: "Matteo", endOffset: 5 }, { case: "np-success", name: "Robert", endOffset: 5 } ]; function getLastSuccess(children) { if (!Array.isArray(children)) { return {}; } for (var i = children.length - 1, o; o = children[i]; i--) { if (o.case === 'success') { return o; } } } console.log(getLastSuccess(children));