Que diriez-vous de cette version en JS natif (ES6 / ES2015) ?
let newObj = Object.assign(...Object.keys(obj).map(k => ({[k]: obj[k] * 3})));
jsbin
Si vous souhaitez parcourir de manière récursive un objet (cartographier un objet imbriqué), vous pouvez le faire ainsi:
const mapObjRecursive = (obj) => {
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object') obj[key] = mapObjRecursive(obj[key]);
else obj[key] = obj[key] * 3;
});
return obj;
};
jsbin
Depuis ES7 / ES2016, vous pouvez utiliser Object.entries
au lieu de Object.keys
de cette manière:
let newObj = Object.assign(...Object.entries(obj).map(([k, v]) => ({[k]: v * 3})));
Et depuis ES2019, vous pouvez utiliser Object.fromEntries
.
let newObj = Object.fromEntries(Object.entries(obj).map(([k, v]) => ([k, v * 3])))