Comment puis-je filtrer chaque clé d'une liste d'objets dans ES6? Compte tenu de cet original (il peut y en avoir plusieurs dans cette liste):
displayFrames: function () {
return this.frames.filter(e => e.key !== 'frame_variables')
}
Je veux renvoyer ceci:
[{"x": 0,
"y": 0,
"width": 10
}]
Je pense à quelque chose listez ceci mais je ne suis pas sûr de la syntaxe:
[{"x": 0,
"y": 0,
"width": 10,
"frame_variables": [{"lookup_type": null,"lookup_id": null}]
}]
Des idées?
3 Réponses :
let array = [{"x": 0,
"y": 0,
"width": 10,
"frame_variables": [{"lookup_type": null,"lookup_id": null}]
}];
let result = array.map(({ frame_variables, ...rest }) => ({ ...rest }));
console.log(result);
vous devez utiliser fonction de carte pour transformer tous vos éléments de votre tableau. Avec destructuring , vous pouvez séparer frame_variables clé du reste de l'objet, donc vous retournez simplement un nouvel objet sans cette clé.
Le filtrage sert à supprimer des éléments entiers d'un tableau. Vous pouvez simplement parcourir le tableau et appeler delete pour chacun d'eux.
for (var i = 0, len = array.length; i < len; i++) {
delete array[i].frame_variables;
}
Quelque chose comme ceci devrait le faire:
let data = {
"x": 0,
"y": 0,
"width": 10,
"frame_variables": [{
"lookup_type": null,
"lookup_id": null
}]
};
const filterAttribute = (obj, keyToFilterOut) => (Object.keys(obj)).reduce((filteredObj, key) => {
if (keyToFilterOut !== key) {
filteredObj[key] = obj[key]
}
return filteredObj;
}, {});
console.log(filterAttribute(data, 'frame_variables'))
Ma solution ne modifie pas non plus l'objet d'origine, mais choisit d'en créer un tout nouveau - idéal si vous souhaitez conserver les données pour d'autres raisons
Copie possible de Filtrer les propriétés des objets par clé dans ES6