如何使用 javascript /Angular 重命名现有对象键? [复制]

Posted

技术标签:

【中文标题】如何使用 javascript /Angular 重命名现有对象键? [复制]【英文标题】:How to rename the existing object's key using java-script /Angular? [duplicate] 【发布时间】:2020-01-17 22:32:00 【问题描述】:

我有一个现有的对象,

this.data = 
   "part": "aircraft",
   "subid": "wing",
   "information.data.keyword": "test",
   "fuel.keyword": "lt(6)"

我要做的是检查每个key,如果密钥有.keyword,那么我试图删除它并在没有.keyword 的情况下创建它。我不确定如何重命名和推送到现有对象。

到目前为止我尝试过的,

for(let x in this.data)       
    if(x.includes('.keyword'))       
        let xy = x.replace(/.keyword/g, "");
        console.log(xy);
    

【问题讨论】:

解决方案已经在问题中了:"...to delete it and create it..." - developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 【参考方案1】:

您可以尝试复制/克隆对象,将其添加到 this.data,然后使用 .keyword 删除版本。

【讨论】:

【参考方案2】:

首先您需要创建一个新密钥。为新创建的键分配值后,您需要删除旧键。

试试这个:

 this.data = 
    "part": "aircraft",
    "subid": "wing",
    "information.data.keyword": "test",
    "fuel.keyword": "lt(6)"
  
  for (let x in this.data) 
    if (x.includes('.keyword')) 
      this.data[x.replace(/.keyword/g, "")] = this.data[x];
      delete this.data[x];
    
  
  console.log(this.data)

【讨论】:

【参考方案3】:

试试这个

 let data = 
    "part": "aircraft",
    "subid": "wing",
    "information.data.keyword": "test",
    "fuel.keyword": "lt(6)"
  

  Object.keys(data).forEach((x) => 
    if (x.includes('.keyword')) 

      this.data[x.replace(/.keyword/g, "")] = data[x];
      delete data[x]
    
);

console.log(data)

【讨论】:

【参考方案4】:

您已经使用过includes()replace()。只需要使用@Andreas 提到的delete 运算符删除对象并创建新条目。

for(var k in data) 
   if (k.includes(".keyword")) 
      var newKey =  k.replace(/.keyword/g, "");// New key for new entry without .keyword
      data[newKey] = data[k]; //Creating new entry 
      delete(data[k]); //Deleting old entry
   

【讨论】:

以上是关于如何使用 javascript /Angular 重命名现有对象键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Javascript“查找”由 Angular 组件提供的元素?

Angular 2:如何将 JavaScript 日期对象与 NgModel 两种方式绑定一起使用

Angular 2:如何将 JavaScript 日期对象与 NgModel 两种方式绑定一起使用

如何从 Angular 项目中使用 javascript 导出独立的 html/css?

如何在 Angular 5 中从 Typescript 调用 JavaScript 函数?

如何使用 javaScript 或 Angular 安全地存储 J.W.T 令牌?