Recibí una llamada de recuperación que devuelve más de 100 objetos en una matriz. Cada objeto obtuvo alrededor de 10 propiedades. Quiero quedarme solo con 3 propiedades.
Ejemplo de JSON devuelto:
[ { id: 'base1-1', name: 'object1', supertype: 'Pokémon', subtypes: ['Stage 2'], level: '42', hp: '80', }, . . //Another 100 objects like that . . { id: 'base1-100', name: 'object100', supertype: 'Pokémon', subtypes: ['Stage 4'], level: '42', hp: '80', }, ];Estoy usando React.useState para configurar esta matriz de objetos en una matriz (tarjetas) pero no quiero guardar todos estos accesorios dentro de cada objeto. Solo quiero nombre e id. ¿Cómo descartar el resto?
Probablemente usaría map , usando desestructuración para seleccionar las 2-3 propiedades que quería; y notación abreviada de propiedades al crear objetos de reemplazo:
const result = objects.map(({id, name}) => ({id, name})); // Destructuring −−−−−−−−−−−^^^^^^^^^^ ^^^^^^^^^^−−− object literal with shorthand properties (Necesita () alrededor del literal del objeto cuando lo devuelve desde una función de flecha de forma concisa porque, de lo contrario, el { parece el comienzo de un bloque de cuerpo de función).
Ese código es más o menos equivalente a:
const result = objects.map(obj => { const id = obj.id; const name = obj.name; return { id: id, name: name }; });Ejemplo en vivo:
const objects = [ { id: 'base1-1', name: 'object1', supertype: 'Pokémon', subtypes: ['Stage 2'], level: '42', hp: '80', }, // ... { id: 'base1-100', name: 'object100', supertype: 'Pokémon', subtypes: ['Stage 4'], level: '42', hp: '80', }, ]; const result = objects.map(({id, name}) => ({id, name})); console.log(result);Puedes usar Array.prototype.map así:
const mappedArray = originalArray.map(({firstProp, secondProp, thirdPropd}) => ({ firstProp, secondProp, thirdProp, }));