así que he estado atascado en una tarea de JavaScript durante horas.
así que me han dado un archivo Json con los siguientes datos:
{ "owner": "Jun31d", "info": [{ "id": 1, "name": "bob", "flavour": "vanilla", "age": 43 }, { "id": 2, "name": "Juneid", "flavour": "Chocolate", "age": 19 }, { "id": 3, "name": "Patrick", "flavour": "Strawberry", "age": 25 }, { "id": 4, "name": "Jean", "flavour": "Mint", "age": 31 }, { "id": 5, "name": "Ahmad", "flavour": "vanilla", "age": 18 }, { "id": 6, "name": "Ali", "flavour": "Bubblegum", "age": 19 }, { "id": 7, "name": "Frank", "flavour": "Pistachio", "age": 23 } ] }La instrucción para mi asignación es la siguiente:
Entonces, por lo que he entendido, necesito crear una función que contenga dos parámetros de cadena, y necesitaré cambiar la propiedad dentro de mi objeto que se encuentra en una matriz a una nueva propiedad.
Y hasta ahora esto es lo que hice:
'use strict' const iceCream = require('./main.json') let namespace = { changeProp : function (newprop,oldprop) { for (let oldprop in iceCream.info) { } } }Sé que no es mucho en absoluto, pero solo quiero un poco de ayuda para saber cómo puedo avanzar un poco más en mi tarea.
Cualquier ayuda se agradece, gracias
Puede reemplazar fácilmente oldKey con newKey usando map , Object.keys y reduce
const data = { owner: "Jun31d", info: [ { id: 1, name: "bob", flavour: "vanilla", age: 43 }, { id: 2, name: "Juneid", flavour: "Chocolate", age: 19 }, { id: 3, name: "Patrick", flavour: "Strawberry", age: 25 }, { id: 4, name: "Jean", flavour: "Mint", age: 31 }, { id: 5, name: "Ahmad", flavour: "vanilla", age: 18 }, { id: 6, name: "Ali", flavour: "Bubblegum", age: 19 }, { id: 7, name: "Frank", flavour: "Pistachio", age: 23 }, ], }; function changePropertyName(arr, oldName, newName) { return arr.map((o) => { return Object.keys(o).reduce((acc, curr) => { curr === oldName ? (acc[newName] = o[oldName]) : (acc[curr] = o[curr]); return acc; }, {}); }); } console.log(changePropertyName(data.info, "flavour", "bestFlavour")); /* This is not a part of answer. It is just to give the output fill height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }Así es como puedes hacerlo. Solución fácil, simple y desagradable.
const data = { owner: 'Jun31d', info: [ { id: 1, name: 'bob', flavour: 'vanilla', age: 43 }, { id: 2, name: 'Juneid', flavour: 'Chocolate', age: 19 }, { id: 3, name: 'Patrick', flavour: 'Strawberry', age: 25 }, { id: 4, name: 'Jean', flavour: 'Mint', age: 31 }, { id: 5, name: 'Ahmad', flavour: 'vanilla', age: 18 }, { id: 6, name: 'Ali', flavour: 'Bubblegum', age: 19 }, { id: 7, name: 'Frank', flavour: 'Pistachio', age: 23 } ] }; const renameProperty = (a, e, n) => a.map((el) => { el[n] = el[e]; delete el[e]; return el; }); console.log(renameProperty(data.info, "id", "_id"));