LoDash - Comment pousser l'une des collections de valeurs dans un autre via une clé commune
J'ai deux collections.
var a =
[
{unique_id: "001", state: "CO"},
{unique_id: "001", state: "TX"},
{unique_id: "001", state: "CC"},
{unique_id: "002", state: "CC"},
{unique_id: "002", state: "NY"}
]
Et
var b =
[
{unique_id: "001", states:[]},
{unique_id: "002", states:[]}
]
Et je veux obtenir:
var b =
[
{unique_id: "001", states:["CO","TX","CC"]},
{unique_id: "002", states:["CC","NY"]}
]
Je dois mentionner que la "b" de la matrice de a à rester dans le même ordre, c'est dans les ET certains de la unique_id de ne pas avoir une valeur.
J'ai essayé d'utiliser LoDash https://lodash.com/ - donc, si quelqu'un peut résoudre ce avec LoDash ce serait génial!
- Qu'avez-vous essayé de faire? Je ne vais pas seulement vous dire, si quelqu'un peut!
- J'ai essayé _.forEach et _.forIn avec Lodash, mais n'arrive pas à comprendre comment le match en poussant les valeurs en "b" par unique_id...
Vous devez vous connecter pour publier un commentaire.
Le temps de la complexité de cette solution est sous-optimal ( O(n^2) ), mais il peut vous aider à penser à des façons de match en poussant les valeurs en "b":
Peut-être une meilleure solution pourrait être à l'index des objets de b par leur id unique à l'aide de lodash de _.indexBy méthode. Par exemple, vous pouvez indexer des objets de b comme suit:
Qui aura pour résultat:
Depuis les objets de notre c tableau pointent vers le même objet en mémoire que ceux de notre b tableau, nous pouvons directement muter nos objets en c et b référence à ces objets mis à jour dans la mémoire. Donc:
Maintenant, si nous prenons un coup d'oeil à notre b tableau, nous allons voir que la valeur est:
Le temps de la complexité de cette solution doit être proche de O(n), qui est beaucoup mieux que d'utiliser le imbriquée _.forEach approche. Extrait de Code:
JS:
HTML:
groupBy() et map() sont vos amis:
Vous êtes essentiellement le regroupement des états par leur
unique_id
, puis mappage objet d'un tableau où chaque élément de la structure dont vous avez besoin.