Buen tiempo, tengo una serie de objetos como este:
var sections = [ {key: 0, label: 'Nothing'}, {key: 11, label: 'Alex Right'},{key: 12, label: 'Dolores Black'},{key: 21, label: 'Bobby Smith'},{key: 26, label: 'Andrew Small'} ];Entonces, por ejemplo, quiero obtener una etiqueta que sea para key=12 (tiene que ser Dolores Black). Si uso algo como:
alert(sections[11]['label']);esto será incorrecto, porque encontrará el elemento 12 de la matriz, no un elemento con clave = 12. Entonces, ¿cuál es la expresión correcta para mi caso? Gracias
Utilice Array#find :
let sections = [ {key: 0, label: 'Nothing'}, {key: 11, label: 'Alex Right'},{key: 12, label: 'Dolores Black'},{key: 21, label: 'Bobby Smith'},{key: 26, label: 'Andrew Small'} ]; let res = sections.find(({key}) => key === 12)?.label; console.log(res);Si sabe que el elemento es el enésimo en la matriz, use sections[n - 1]['label'] ; por ejemplo, para obtener a Dolores Black (el tercer elemento), harías lo siguiente:
sections[2]['label']; // 3 - 1 = 2 Si no conoce la posición del elemento de antemano, debe darle alguna condición a JavaScript para que pueda encontrarlo; en su caso, la condición es item .key === 12 :
sections.find((item) => item.key === 12)['label'];Tenga en cuenta que en ambos casos asumimos que el elemento realmente existe en la matriz (si no es así, habrá errores).
Envolvería esto en una función. Dentro de la función uso la función js find(). Si tiene más elementos con la misma identificación, entonces usaría filter en lugar de find.
const sections = [ {key: 0, label: 'Nothing'}, {key: 11, label: 'Alex Right'},{key: 12, label: 'Dolores Black'},{key: 21, label: 'Bobby Smith'},{key: 26, label: 'Andrew Small'} ]; const id = 11; function getLabel(id) { return sections.find(e => e.key === id)['label']; } console.log(getLabel(id))