【问题标题】:Typescript/ Angular - How can I rename object received from server?Typescript/ Angular - 如何重命名从服务器接收到的对象?
【发布时间】:2021-04-01 02:08:07
【问题描述】:

我正在从服务中获取以下格式的数据

yourData.ts 文件

export interface YourData {
    first_name: number;
    last_name: number;

在 UI Angular 上,我想将格式显示为 Lower camel case

html文件

firstName is {{firstName}}
lastName is {{lastName}}

我可以在哪里以及如何进行上述更改?

我正在计划类似的事情,不确定是否正确

export const parseFromServer = (response:any) =>{
    return {
        firstName : response.first_name
    }
}

【问题讨论】:

  • 这种情况下你可以直接写,不是吗?我的意思是,就像你的 HTML 中的 firstName 是 {{yourObject.first_name}}。
  • @Deepak 我想要的是将first_name 重命名为firstName

标签: angular typescript server interface


【解决方案1】:

更新:

如果您希望使用相同的对象,方法是添加一个新键并删除旧键。如果您想使用新对象,请检查旧答案。

    var oldObject: any = {
        first_name: 1,
        last_name: 2
    }
    var keys = Object.keys(oldObject);
    for(var key in oldObject) 
    {
        let words = key.split("_");
        oldObject[words[0][0].toLowerCase() + words[0].substring(1) + words[1][0].toUpperCase() + words[1].substring(1)] = oldObject[key]; // add new key
        delete oldObject[key]; // delete old key
    }
    console.log(oldObject)

您需要做的只是确保键名是唯一的,并且单词格式为 {word1}_{word2}

旧答案:

根据评论,我了解到您希望将对象键从 first_name 重命名为 firstName。您不能这样重命名,但您可以使用所需的键名创建一个新对象并分配适当的值。

从您的示例中,如果您已经知道键名,那么很简单:

var oldObject = {
    first_name: 1,
    last_name: 2
}
var newObject = {
  firstName: oldObject.first_name,
  lastName: oldObject.last_name
}; 
console.log(newObject)

如果您不知道键名,但您知道格式是 {word1}_{word2},那么您可以编写自己的逻辑。这是一个:

var oldObject: any = {
    first_name: 1,
    last_name: 2
}
var newObject: any = {};
var keys = Object.keys(oldObject);
for(var key in oldObject) 
{
  let words = key.split("_");
  newObject[words[0][0].toLowerCase() + words[0].substring(1) + words[1][0].toUpperCase() + words[1].substring(1)] = oldObject[key];
}
console.log(newObject)

这是playground

【讨论】:

  • 嗨,迪帕克,感谢您的回答。您能帮我解决如何在界面中重命名然后发送到 UI 吗?
  • 当然。如果您不想要新对象而只是重命名同一对象,请检查更新后的答案。
  • 对不起,你更新了上面的代码吗?我觉得还是一样
【解决方案2】:

我认为您可以尝试这种方法,不确定它是否适用于您的情况 - https://levelup.gitconnected.com/spreading-resting-and-renaming-properties-in-typescript-68fb35ffb1f

【讨论】:

  • 我试过这个const parseFromServer = ({first_name, ...remainder})=>({firstName:first_name, ...remainder})它给出了错误Binding element 'first_name' implicitly has an 'any' type.ts(7031)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2017-10-20
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多