0
votes

boucle et plan via des objets dans la matrice et le groupe par la valeur

J'essaie de grouper des campagnes dans mes données par la personne des ventes qui les crée créée, mais continuez de contourner des cercles avec des méthodes différentes JS Tabley.

J'ai filtré mes principales données définies pour renvoyer ceux qui ont le rôle d'utilisateur de la personne de vente.

J'ai mes données de campagne qui montre qui a créé les campagnes

Je dois maintenant les regrouper par la personne des ventes.

dans mon esprit. Je l'ai vu comme une boucle / carte à travers chaque objet de campagne dans la matrice de campagnes, cochez le nom de créationby et renvoyer une nouvelle gamme d'objets ayant le groupe de résultats par CreatedBy Name.

sonnait facile dans ma tête mais peut " t se déplace.

J'ai mis ensemble ce qui suit: xxx

Je ne peux pas comprendre comment "boucle" à travers chaque vendeur. < / p>

J'ai examiné la carte / réduire et les solutions de groupeBy, mais rien ne se ferme à distance. Où suis-je mal?


0 commentaires

3 Réponses :


2
votes

Pour regrouper par une propriété, vous voulez généralement utiliser Array.Prototype.reduce dans un motif, comme: xxx


1 commentaires

Exactement ce dont j'avais besoin. Merci pour la reponse detaillee. M'a aidé à comprendre beaucoup la solution aussi.



0
votes

Vous pouvez utiliser cette méthode pour regrouper par l'utilisateur des ventes. Appelez simplement cette méthode comme celle-ci: Cons groupé = Groupby (CampagneData, ['CaysBy']); Code>

groupBy(xs, key) {
        return xs.reduce((rv, x) => {
            const v = x[key];
            const el = rv.find((r) => r && r.key === v);
            if (el) {
                el.values.push(x);
            } else {
                rv.push({
                    key: v,
                    values: [x]
                });
            }
            return rv;
        }, []);
    }


1 commentaires

Cela crée une matrice imbriquée, mais généralement lors du regroupement d'une propriété, vous souhaitez pouvoir obtenir tous les enregistrements en passant une valeur de propriété, c'est-à-dire dans un objet haché sur la valeur de la propriété.



-1
votes

En supposant que votre matrice contient des objets, vous pouvez utiliser la fonctionnalité du filtre.

p>

const campaignData = [{
    budget: 57154564,
    company: "sales company",
    createdAt: "2020-07-30T09:03:51.925Z",
    createdBy: "sales user",
    creator_id: "5f228c8d58769fc7d556a6fa",
    endDate: "2020-11-08T00:00:00.000Z",
    isDeleted: false,
    location: "Helsinki",
    name: "sales test campaign"
  },
  {
    budget: 10,
    company: "sales company",
    createdAt: "2020-07-29T09:03:51.925Z",
    createdBy: "buy user",
    creator_id: "5f228c8d58769fc7d556a6fb",
    endDate: "2020-12-08T00:00:00.000Z",
    isDeleted: false,
    location: "Stockholm",
    name: "sales test campaign"
  }
];

const filteredCampaigns = campaignData.filter(
  function(item) {
    return item.createdBy == 'sales user';
  }
);

console.log(filteredCampaigns);


0 commentaires