在ES6中重命名对象属性的最佳方法

时间:2018-03-05 01:21:19

标签: javascript reactjs ecmascript-6

我还在学习js,我需要一个建议。我从后端获取json对象,但键有下划线。将密钥重命名为的最佳做法是什么,例如folder_name到Folder name?属性列表已知并已完成,因此我可以在常量中保留新名称。在前端,我已经像这样使用它了:

const showPropertiesList = properties => Object.keys(properties).map(property => (
  <PropertyKey key={property}}>
    `${property}: ${properties[property]}`
  </PropertyKey>
));

最好在此地图中使用重命名功能,或者在使用值获取所有重命名的键之前创建单独的函数? json文件:

properties {
  folder_name: „test”.
  user_email: test@example.com,
  user_agreed: 1,
  site: „example.com”,
}

4 个答案:

答案 0 :(得分:2)

您可以创建某种mapping对象,然后使用以下Object.keysreduce功能的组合:

&#13;
&#13;
let properties = {
  folder_name: "test",
  user_email: "test@example.com",
  user_agreed: 1,
  site: "example.com"
};

let mapping = {
  folder_name: "Folder name",
  user_email: "User email",
  user_agreed: "User agreed",
  site: "Site"
};

let mapped = Object.keys(properties).reduce((acc, key) => {
  acc[mapping[key]] = properties[key];
  return acc;
}, {});

console.log(mapped);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

映射是一种很好的方法,正如之前的答案所指定的那样。

在您的情况下,您也可以重命名内联:

const showPropertiesList = properties => Object.keys(properties).map(property => (
  <PropertyKey key={property}}>
    `${property.replace('_', ' ')}: ${properties[property]}`
  </PropertyKey>
));

取决于您是希望在任何地方进行更改还是仅向用户显示

答案 2 :(得分:0)

旅行,所以我不能编程atm。但我认为这会让你朝着正确的方向前进。

让newArray = array()

OldArray.forEach(function(value, key) {
    // do stuff here to change the key value
    Let newKeyValue = //something 
    newArray[ newKeyValue] = value;
});

// do stuff with newArray

希望它有所帮助。不测试它!

答案 3 :(得分:0)

尝试一下:

const { folder_name: folderName, user_email: email, ...others } = originObject;
const renamedPropsObject = { folderName, email, ...others }