Tengo algunos datos que me gustaría mostrar en mi interfaz, pero su propiedad de nombre es una matriz de objetos, con un objeto anidado en ese objeto. Así se estructuran los datos en la solicitud:
name: Array [ {…} ] 0: Object { 0: "E", 1: "r", 2: "i", … } 0: "E" 1: "r" 2: "i" 3: "c" 4: " " 5: "C" 6: " " 7: "P" 8: "e" 9: "z" 10: "z" 11: "u" 12: "l" 13: "o" _id: "6186b6777a38b7da536a6ffd" <prototype>: Object { … } length: 1 No puedo mapearlo ( userData.name[0].map ) porque no es una matriz.
¿Cuál es la forma correcta de iterar a través de un objeto como este y unir cada letra?
No sé si hay una forma más sencilla, pero si usas slice puedes hacerlo todo en una línea encadenada. También puede crear una función, para la legibilidad y la extensión.
const arr = [{ 0: 'E', 1: 'r', 2: 'i', 3: 'c', 4: ' ', 5: 'C', 6: ' ', 7: 'P', 8: 'e', 9: 'z', 10: 'z', 11: 'u', 12: 'l', 13: 'o', _id: '6186b6777a38b7da536a6ffd' }]; let name = Object.values(arr[0]).slice(0,-1).join(''); console.log(name); const getFull=(o)=>Object.values(o).slice(0,-1).join(''); console.log(getFull(arr[0]));O para transformar todo:
const arr = [{ 0: 'E', 1: 'r', 2: 'i', 3: 'c', 4: ' ', 5: 'C', 6: ' ', 7: 'P', 8: 'e', 9: 'z', 10: 'z', 11: 'u', 12: 'l', 13: 'o', _id: '6186b6777a38b7da536a6ffd' },{ 0: 'C', 1: 'h', 2: 'r', 3: 'i', 4: 's', 5: ' ', 7: 'S', 8: 't', 9: 'r', 10: 'i', 11: 'c', 12: 'k', 13: 'l', 14: 'a', 15: 'n', 16: 'd', _id: '6186b6777a38b7da536a6ffd' }]; const getFull=(o)=>Object.values(o).slice(0,-1).join(''); let buffer = arr.map(a=>getFull(a)); console.log(buffer);A partir de ahora estoy usando este
const fullName = Object.values(userData.name[0]); console.log(fullName); fullName.pop(); const name = fullName.join(""); console.log(name); Que me da lo que busco ( // Eric C Pezzulo )
No es bonito, pero funciona. Si alguien tiene una forma más sencilla de hacer esto o limpiarlo, estoy abierto a cualquier sugerencia.
Algo como esto puede verse un poco más limpio
const arr = [ { 0: 'E', 1: 'r', 2: 'i', 3: 'c', 4: ' ', 5: 'C', 6: ' ', 7: 'P', 8: 'e', 9: 'z', 10: 'z', 11: 'u', 12: 'l', 13: 'o', _id: '6186b6777a38b7da536a6ffd' } ]; const fullName = Object.values(arr[0]).slice(0, -1).join(''); console.log(fullName);