¿Cuál es el mejor enfoque para extraer el siguiente objeto? Probé de dos maneras. ¿Se puede refactorizar de alguna otra manera para optimizar el rendimiento?
const data = { "postcode": [ "123456" ], "time": [ "05:11" ] };Enfoque 1:
for (const element of Object.entries(data)) { const key = element[0]; const value = element[1][0]; data[key] = value; }Enfoque 2:
for (const key in data) { if (Object.hasOwnProperty.call(data, key)) { data[key] = data[key][0]; } } console.log('data ', data);Un método conciso es este:
for (const [key, [value]] of Object.entries(data)) { data[key] = value } Observe el conjunto adicional de [] alrededor de [value] para extraer el valor de esa matriz inmediatamente también.
Por supuesto, la concisión no siempre es mejor y es posible que prefiera sus otras soluciones si cree que son más legibles.
En términos de rendimiento, esto no es mejor que su primera solución. Su segunda opción será más eficiente con la memoria, aunque depende en gran medida del tamaño y la forma de su objeto.
Este enfoque resolverá su problema. MDN recomendado!
const object1 = { a: 'somestring', b: 42 }; for (const [key, value] of Object.entries(object1)) { console.log(`${key}: ${value}`); } // expected output: // "a: somestring" // "b: 42"