Si tengo una matriz de JavaScript que incluye 10 objetos con la siguiente sintaxis:
const myArray = [{Age: 10, Name: Justin}, {Age: 15, Name: Bob}, ..., {Age: 20, Name: Jon}];¿Cuál es la forma más eficiente de actualizar la clave de nombre para que sea DisplayName? Esta es mi lógica actual:
myArray = myArray.map(item=>{return {age:item.age, displayName:item.name }});Creo que tu lógica está bien, pero se puede acortar.
myArray = myArray.map(({ age, name }) => ({ age, displayName: name }));Se puede hacer mediante una copia superficial y usar el operador de extensión para cambiar el nombre de la clave del objeto.
const arr = [{Age: 10, Name: 'Justin'}, {Age: 15, Name: 'Bob'}, {Age: 20, Name: 'Jon'}]; function renameKey(obj, oldName, newName) { const { [oldName]: val, ...rest } = obj return { ...rest, [newName]: obj[oldName] } } const res = arr.map(i => { const tmp = renameKey(i, 'Name', 'displayName') return tmp }) console.log('result ~> ', res) o con lodash
const arr = [{Age: 10, Name: 'Justin'}, {Age: 15, Name: 'Bob'}, {Age: 20, Name: 'Jon'}]; const res = _.map(arr, function(i) { return _.mapKeys(i, function(val, key) { return key === 'Name' ? 'displayName' : key }) }) console.log('res ~> ', res) <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>Si desea actualizar el Array original, nunca use map . Porque el map se usa para crear una nueva matriz a partir de una existente.
En su lugar, recorra los nodos en Array. Cree el nuevo nodo con la clave displayName y elimine la clave Name .
violín de trabajo
const myArray = [{Age: 10, Name: 'Justin'}, {Age: 15, Name: 'Bob'}, {Age: 20, Name: 'Jon'}]; myArray.forEach((node) => { node.displayName = node.Name; delete node.Name; }); console.log(myArray);