1
votes

Comment renommer la clé d'objet existante en utilisant javascript / angular?

J'ai un objet existant,

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

Ce que j'essaye de faire est de vérifier chaque clé et si la clé a .keyword alors j'essaye de le supprimer et de le créer sans .keyword . Je ne sais pas comment renommer et pousser vers un objet existant.

ce que j'ai essayé jusqu'à présent,

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


1 commentaires

La solution est déjà dans la question: "... le supprimer et le créer ..." - developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ …


4 Réponses :


1
votes

Vous pouvez essayer de copier / cloner l'objet, l'ajouter à this.data, puis supprimer la version avec .keyword.


0 commentaires

2
votes

Vous devez d'abord créer une nouvelle clé. Après avoir attribué une valeur à la clé nouvellement créée, vous devez supprimer l'ancienne.

Essayez ceci:

 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)


0 commentaires

2
votes

Essayez ceci

 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)


0 commentaires

2
votes

Vous avez déjà utilisé includes () et replace () . Il suffit de supprimer l'objet en utilisant l'opérateur delete comme @Andreas mentionné et créer une nouvelle entrée.

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
   }
}


0 commentaires