/ / Créer un sous-ensemble d'un tableau d'objets JavaScript en fonction de l'une de leurs propriétés? - javascript, tableaux, objets

Faire un sous-ensemble d'un tableau d'objets JavaScript basé sur l'une de leurs propriétés? - javascript, tableaux, objets

J'ai un tableau d'objets JavaScript avec les mêmes propriétés, quelque chose comme ceci:

box[0] = { name: "somename", /* more properties... */ };
box[1] = { name: "othername", /* more properties... */ };
box[2] = { name: "onemorename", /* more properties... */ };
// more objects in the array...

Je veux sous-définir ce tableau afin qu'il ne contienne que des objets correspondant à un "liste" des noms et copiez ceux qui ne le sont pas dans un autre tableau nommé cache peut être. Je pensais que je pourrais peut-être comparer ce tableau d’objets à un autre tableau contenant uniquement une liste de chaînes avec les noms souhaités, en vérifiant la propriété name de chaque objet par rapport à cette liste afin de créer un nouveau tableau avec ceux qui correspondent. Je ne sais pas si cela fonctionnerait ou si c’est la meilleure approche pour atteindre ce que je veux, c’est pourquoi je demande votre aide. Peut-être que vérifier chacun des 200 à 500 objets par rapport à une liste de 100 noms n’est pas une très bonne chose à faire, je ne sais pas vraiment.

Avez-vous des idées sur la façon dont je pourrais faire cela? Mieux encore, pouvez-vous me donner un exemple?

Merci d'avance.

Réponses:

0 pour la réponse № 1

En supposant que la liste de noms que vous voulez soit stockée dans un tableau,

var wantedNames = [ "first name", "second name", .. ];

avoir deux tableaux: ceux qui correspondent à un nom et ceux qui ne le font pas. Parcourez chaque élément de l’objet boîte et, s’il contient un nom de la liste, incluez-le.

var objectsMatchingName = box.filter(function(item) {
return wantedNames.indexOf(item.name) !== -1;
});

var cache = box.filter(function(item) {
return objectsMatchingName.indexOf(item) === -1;
});

Je souhaite qu'il y ait une opération de différence de tableau de quelque sorte, donc vous pourriez faire (en pseudocode):

var cache = box - objectsMatchingName