JSFiddle - React, Tailwind, and code Playground

by evgkch

JavaScript

const obj = {
	a: 1,
  b: 2,
  c: 3,
  d: 4,
};

function mapObj(targetObj, cb){
  const buffer = Object.assign({}, targetObj);
  for (let key in buffer)
  {
    const [newKey, newProp] = cb(key, buffer[key]);
    if (key == newKey && newProp != buffer[key])
      buffer[key] = newProp;
    if (key != newKey)
    {
      buffer[newKey] = newProp;
      delete buffer[key];
    }
  }
  return buffer;
}

const newObj = mapObj(obj, (key, prop) => { console.log(key, prop); return ['_' + key, prop] });

console.log(newObj)