tengo arr
let arr = [ {tags: {x: 2, y: 12}}, {type: {x: 23, y: 44}}, {order: {x: 5, y: 1200}}, ]y necesidad (la misma clave, pero el valor debe provenir de x actual)
let arr = [ {tags: 2}, {type: 23}, {order: 5} ]lo que intento
arr.map(({ k, v }) => { [k]: vx });Por favor sobre ayuda!!
Esta debería ser una forma posible de obtener el objetivo deseado.
Fragmento de código
let arr = [ {tags: {x: 2, y: 12}}, {type: {x: 23, y: 44}}, {order: {x: 5, y: 1200}}, ]; const res = arr.flatMap( obj => Object.entries(obj).map( ([k, {x}]) => ({ [k]: x }) ) ); console.log(res);Explicación
.flatMap() (para evitar una matriz anidada en el resultado)obj ) e itere sobre pares clave-valor usando Object.entries()[key, value] para acceder directamente a prop xx como el valorlet arr = [ {tags: {x: 2, y: 12}}, {type: {x: 23, y: 44}}, {order: {x: 5, y: 1200}}, ] arr.map((item) => { const newItem = {} newItem[ Object.keys(item)[0]] = item[Object.keys(item)[0]].x return newItem })Esta es mi solución. ¡Funcionó pero no creo que sea una buena respuesta!
Te estás moviendo en la dirección correcta. Solo necesita Object.entries para ayudarlo a obtener k y v como una matriz [k, v] .
let arr = [ {tags: {x: 2, y: 12}}, {type: {x: 23, y: 44}}, {order: {x: 5, y: 1200}} ]; const output = arr.flatMap( o => Object.entries(o).map(([k,v]) => ({[k]:vx})) ); console.log( output ); Alternativamente, dado que v tiene las mismas propiedades en todos los elementos, puede usar la desestructuración como en la demostración a continuación:
let arr = [ {tags: {x: 2, y: 12}}, {type: {x: 23, y: 44}}, {order: {x: 5, y: 1200}} ]; const output = arr.flatMap( o => Object.entries(o).map(([k,{x,y}]) => ({[k]:x})) ); console.log( output );