Mi matriz de objetos se parece a esto
const arr1 = [ {person: {isPresent: true, isInsured: true, value:20}}, {status: {isPresent: true, isInsured: true, value:20}}, ]Quiero devolver un objeto/matriz que se parezca a esto
[ {person: {value:20}}, {status: {value:20}}, ]Intenté mapear esta matriz pero no puedo obtener el resultado deseado y me pregunto qué me estoy perdiendo. Cualquier ayuda apreciada, gracias!
Es posible que necesite algo como esto:
interface Details { isPresent: boolean; isInsured: boolean; value: number; } interface Person { person: Details; } interface Status { status: Details; } type Tuple = [Person, Status]; const arr1: Tuple = [ { person: { isPresent: true, isInsured: true, value: 20 } }, { status: { isPresent: true, isInsured: true, value: 20 } }, ]; const extractValue = ({ value }: Details) => ({ value }); const result = arr1.map(x => { if ('person' in x) { return { person: extractValue(x.person) }; } if ('status' in x) { return { status: extractValue(x.status) }; } return x; }); console.log(result);Puedes jugar con él en este patio de juegos de TypeScript
Puedes hacerlo:
const arr1 = [ {person: {isPresent: true, isInsured: true, value:20}}, {status: {isPresent: true, isInsured: true, value:20}}, ]; const newArray = []; for (const val in arr1) { const keys = Object.keys(arr1[val]); keys.forEach((key, index) => { //console.log(key); //console.log(arr1[val][key]['value']); newArray.push({[key]: {value: arr1[val][key]['value']}}); }); } console.log(newArray);Volverá:
[ { person: { value: 20 } }, { status: { value: 20 } } ]