Analizar una matriz de objetos en un nuevo formulario usando un diccionario como alias, pero me pregunto si se puede hacer sin Object.keys
const mapper = { "card_title": "title", "card_content": "content", "card_subtitle": "subtitle" } const data = [ { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, ]esta es la parte donde me gustaría cambiarla tal vez con el operador de propagación
let results = data.map((r) => { let obj = {}; Object.keys(mapper).map(key => obj[mapper[key]] = r[key] ) return obj; }) Expected result that i achieved with the code above
[ { title: 'wowo1', content: 'wowo1', subtitle: 'wowo1' }, { title: 'wowo1', content: 'wowo1', subtitle: 'wowo1' }, { title: 'wowo1', content: 'wowo1', subtitle: 'wowo1' } ]Debe usar Object.entries para obtener pares clave, valor como una matriz, y luego usar Object.fromEntries para obtener el nuevo objeto después de mapear la clave usando mapper y mantener el valor tal como está.
Prueba como a continuación.
const mapper = { "card_title": "title", "card_content": "content", "card_subtitle": "subtitle" } const data = [ { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, ] const output = data.map((item) => Object.fromEntries( Object.entries(item).map(([key, value]) => [mapper[key], value]) ) ); console.log(output);Sin cambiar el mapper , tendrá que usar Object.keys() en el mapper O en los objetos de datos. ¿Quizás quieras usar un map ?
const mapper = new Map() mapper.set('card_title', 'title') mapper.set('card_content', 'content') mapper.set('card_subtitle', 'subtitle') const data = [ { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, ] const mapped = data.map(d => { const obj = {} mapper.forEach((val, key) => { obj[val] = d[key] }) return obj }) console.log(mapped)Map y reduce() const mapper = new Map() mapper.set('card_title', 'title') mapper.set('card_content', 'content') mapper.set('card_subtitle', 'subtitle') const data = [{ card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, { card_title: "wowo1", card_content: "wowo1", card_subtitle: "wowo1", }, ] const mapped = data.map(src => { return Array.from(mapper).reduce((obj, [from, dest]) => { obj[dest] = src[from] return obj }, {}) }) console.log(mapped)