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