Tengo un código como el siguiente
function renameKey ( obj, oldKey, newKey ) { obj[newKey] = obj[oldKey]; delete obj[oldKey]; } const arr = JSON.parse(json); arr.forEach( obj => renameKey( obj, '_id', 'id' ) ); const updatedJson = JSON.stringify( arr );
Pero parece que la función de flecha (=>) no funcionará en mi entorno y obtendrá el siguiente error.
La sintaxis de la función de flecha (=>)' solo está disponible en ES6 (use 'esversion: 6')
Es un entorno Apigee y no tengo permiso para cambiar ninguna configuración. Cuando elimino la función de flecha y llamo como una función normal como la siguiente, está fallando
const arr = JSON.parse(json); arr.forEach(renameKey( obj, '_id', 'id' ) ); const updatedJson = JSON.stringify( arr );
Entonces, para cambiar cada clave en el JSON, ¿cómo puedo usar el ciclo forEach o sería útil si hay un método alternativo? ¿Alguien podría sugerirlo?
Si te gusta usar un cierre con este
arr.forEach(renameKey('_id', 'id'))
patrón, puede tomar un cierre sobre el nombre de clave antiguo y nuevo y devolver una función que acepta el objeto para cambiar el nombre.
function renameKey (oldKey, newKey) { return function (obj) { obj[newKey] = obj[oldKey]; delete obj[oldKey]; }; }
const arr = JSON.parse(json); arr.forEach(function(obj){ renameKey( obj, '_id', 'id' ) }); const updatedJson = JSON.stringify( arr );