0
votes

Obtenez une combinaison de tous les éléments de l'objet JavaScript

J'essaie d'écrire un programme qui génère chaque article basé sur ma structure JSON et donnant chaque combinaison un numéro individuel. J'ai trouvé une fonction ici que, jusqu'à présent, son travail énumère toutes les combinaisons pour moi, mais je ne peux pas déchiffrer le code au point que j'étais même compris em> ce qu'il fait. Cela me donne tous les articles, écoutez comme clé: valeur em> mais honnêtement, je ne sais pas quelle partie du code fait quoi et je ne peux pas y accéder afin de construire dans mes numéros uniques. Ceci est le code que j'ai trouvé ici (perdu le fil à celui-ci): XXX PRE>

Il est simplement écrit dans une syntaxe trop avancée pour que je comprends à distance où je dois me insérer pour faire calculs. Je suppose que ce que je demande, ce serait une explication ou un code un peu plus compréhensible et modifié. J'ai certainement besoin de traverser tous les éléments comme celui-ci fait et que la sortie a fière allure de ce que je pouvais dire jusqu'à présent, j'ai juste besoin de calculer les clés et d'avoir une sortie d'un numéro dérivé des clés combinées de chaque objet. Un exemple serait le livre 243 pour le titre 2, l'auteur 4 et l'éditeur 3. J'espère que quiconque peut donner une idée de cela. Merci beaucoup! P>

Edit: Inclus Mes propres données et la sortie souhaitée. Les combinaisons que j'ai affichées n'ont pas besoin de donner un sens. P>

var Product = {
    json:  { Product : {
        assortment: [
        {
            name: "Yoghurt",
            Flavor: ["natural", "honey", "stracciatella"],
            Kind: ["greek", "soy"],            
        },
        {
            name: "Sauce",
        },
        {
            name: "Milk Drink",             
        }
        ],
        Brand: ["Oatly", "Dannon"],
        Containment: ["Cup", "Jar"]
}}};


6 commentaires

Quelle est la sortie attendue réelle de l'entrée que vous avez fournie? Je ne peux pas comprendre juste de votre exemple.


Veuillez ajouter vos données brutes et le résultat recherché.


JSON est un format de texte, comme CSV ou XML. Ce que vous avez sont des objets et des tableaux, pas de Json impliqué.


Il crée toutes les combinaisons de valeurs par clé des enfants d'un nœud par niveau de nidification (c.-à-d. Produit cartésien des ensembles de valeurs pour enfants de nœud). Cela fonctionne de manière récursive à chaque nœud, puis par clé générant un objet pour toutes les autres combinaisons.


J'ai ajouté mes propres données ainsi que la sortie souhaitée. Désolé pour le dérangement.


D'où obtenez-vous les chiffres?


3 Réponses :


0
votes

donné c_1 code> et c_2 code> deux ensembles

Le produit cartésien de C_1 code> et C_2 code> p> P >

est donné par c_1 x c_2 = {(c_1_i, c_2_j) pour c_1_i dans c_1, c_2_j in c_2} code> p>

Vous pouvez créer c_1 x c_2 x C_3 code> en considérant (c_1 x c_2) code> (que vous avez calculé auparavant) et "attenant" chaque élève de c_3 code> à un tuple de C_1 x C_2 code> p>

etc. p>

p>

const cartesianProduct = (C, D) => {
  const res = []
  C.forEach(c => {
    D.forEach(d => {
      // in case the tuple contains only one element (the initialization)
      // make the elmeent into a tuple
      const tuple = Array.isArray(c) ? c : [c]
      res.push([...tuple,d])
    })
  })
  return res
}


const nCartesianProduct = (Cs_n) => {
  // we adjoin each elem of C_i and we "grow"
  return Cs_n.reduce((res, C_i) => cartesianProduct(res, C_i))
}

console.log(nCartesianProduct([['b1', 'b2', 'b3'], ['t1', 't2'], ['a'], ['p']]))


0 commentaires

0
votes

Voici ma tentative de poser des termes simples:

permet d'assumer un exemple de combinaisons possibles p> xxx pre>

peut être enregistrée comme suit: p> XXX PRE>

Pensez-y comme une horloge, où la dernière ligne augmentera la valeur de la ligne précédente, une fois qu'il atteint son maximum. En d'autres termes: augmente la position I de la dernière rangée et quand sur la limite -> Laissez-la à zéro et augmentez la frère à la place, où si le frère est sur le dessus -> répéter. P>

Considérez le code suivant : P>

["book1 title1 author1 publisher1", "book1 title2 author1 publisher1", "book2 title1 author1 publisher1", "book2 title2 author1 publisher1", "book3 title1 author1 publisher1", "book3 title2 author1 publisher1"]


0 commentaires

0
votes

Vous pouvez prendre les données ci-dessus sans pièces superflues et simplifier le résultat en créant une matrice plate des propriétés imbriquées.

Les numéros de l'image de résultat ne sont pas inclus, en raison de la relation manquante de chaque valeur à la valeur donnée. Ensemble de données. p>

p>

.as-console-wrapper { max-height: 100% !important; top: 0; }


0 commentaires