美文网首页
2021-09-30-🌦🌦 js 修改对象key

2021-09-30-🌦🌦 js 修改对象key

作者: 华山派首席大弟子 | 来源:发表于2021-09-30 09:46 被阅读0次

原始数据:


let Obj={
  parentid:"43323wsd2e2d2e33r3redad",
  head_img:"i am a url",
}

想要的数据:


let newObj={
  ParentID:"43323wsd2e2d2e33r3redad",
  avator:"i am a url",
}

第一种,正则替换,缺点,如果value等于key,会有问题

/**
* @param {Object}  { parentid:"43323wsd2e2d2e33r3redad"}
* @param {Object}  { parentid: "ParentID"}
* @return {Object}  { ParentID:"43323wsd2e2d2e33r3redad"}
*/
const  renameKeys = (target, keys) => {
  const key = Object.keys(keys).reduce((pre, cur) => pre + "|" + cur)
  const reg = new RegExp(`${key}`, "ig")
  return JSON.parse(JSON.stringify(target).replace(reg, matched => keys[matched]))
}

第二种,reduce产生新的对象,缺点,使用更大内存

const renameKeys = (obj,keysMap) =>
  Object.keys(obj).reduce(
    (acc, key) => ({
      ...acc,
      ...{ [keysMap[key] || key]: obj[key] }
    }),
    {}
  );
const obj =  { parentid:"43323wsd2e2d2e33r3redad"};
renameKeys(obj, { parentid: "ParentID"})  // { ParentID:"43323wsd2e2d2e33r3redad"}

相关文章

网友评论

      本文标题:2021-09-30-🌦🌦 js 修改对象key

      本文链接:https://www.haomeiwen.com/subject/dhxenltx.html