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

5

我还在学习js,需要一些建议。我从后端获取json对象,但键名带有下划线。最佳实践是将键名重命名为比如文件夹名folder_name到Folder name?属性列表已知和完成,因此可以将新名称保存在常量中。在前端,我已经这样使用它:

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

在这个map中,是使用rename函数还是在之前创建一个单独的函数来获取所有重命名后的键和值更好?

json文件:

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

请看这个链接:https://dev59.com/qWEi5IYBdhLWcg3wldBu - David
4个回答

12

您可以创建某种类型的映射对象,然后使用以下组合Object.keysreduce函数:

const properties = {
  folder_name: "test",
  user_email: "test@example.com",
  user_agreed: 1,
  site: "example.com"
};

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

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

console.log(mapped);


我认为原帖的作者知道如何做,他/她想知道以下内容:在这个映射中使用重命名函数还是先创建单独的函数以获取所有重命名的键和值更好? - Ele
1
@Ele 嗯,这取决于他/她是否需要进一步使用这个映射对象。如果不需要的话,像另一个答案建议的那样,在线重命名属性会更容易、更快速。 - Kirill Simonov

7
尝试这个:
const { folder_name: folderName, user_email: email, ...others } = originObject;
const renamedPropsObject = { folderName, email, ...others }

1

我正在旅行,暂时无法编程。但是我认为这会帮助你朝着正确的方向前进。

    let 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

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

0

映射是一种好的方法,正如先前的回答所指出的。

在您的情况下,您还可以在线重命名:

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

根据你是想在所有地方更改还是只是呈现给用户的地方更改


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接