Avant de présenter le texte principal, je vous ajouterai des connaissances:
algorithme de produit cartésien JS
Générer un produit cartésien à partir de l'objet ou du tableau donné
// Fonction de combinaison de produits cartésienne descartes (list) {// Parent Index précédent; comptage du pointeur Count var Point = {}; var result = []; var pindex = null; var tempcontor = 0; var temp = []; // générer des objets de pointeur basés sur les colonnes de paramètres pour (var index dans la liste) {if (typeof list [index] == 'objet') {index] = index] {'parent': Pindex, 'count': 0} Pindex = index;}} // La structure de données à dimension unique renvoie directement if (pindex == null) {return list;} // Génération dynamique du produit cartésien while (true) {for (var index in list) {tempCount = point [index] ['count']; Résultat Array Result.push (temp); temp = []; // vérifier le problème de valeur du pointeur maximum while (true) {if (point [index] ['count'] + 1> = list [index] .length) {Point [index] ['count'] = 0; pindex = point [index] ['parent']; if (pindex == null) {return result;} // affecter le parent pour vérifier index = index = Pindex;} else {point [index] ['count'] ++; break;}}}}}}D'accord, l'algorithme de génération cartésienne JS est juste de jeter les bases du texte suivant. Je ne dirai pas grand-chose, donc je reviendrai au point.
1. Description des exigences
La fonction de version du produit des sites Web de commerce électronique, similaire à la page Détails du produit de JD.com, comme indiqué dans la figure ci-dessous, comment une telle fonction sélectionnable est-elle générée en arrière-plan? En fait, l'iPhone 6 que vous voyez n'est pas seulement un produit lorsqu'il est publié, mais beaucoup, car le prix de chaque iPhone 6 sélectionné est différent, donc lors de la publication du produit, ces éléments optionnels sont sélectionnés à partir d'un tas d'attributs et de valeurs d'attribut. Le problème est que le nombre d'attributs sélectionnés pendant la publication est différent et que les valeurs d'attribut sont également différentes. Ensuite, le nombre de produits générés est combiné en fonction des attributs et des valeurs d'attribut.
2. Téléchargez directement le code
<Script> / *** Type d'attribut de produit * Le nombre d'attributs est incertain * / var spec = function (specname, Specitems) {this.specname = specname; // Nom d'attribut this.specitems = Specitems; // La valeur numérique est un tableau, le nombre de tableaux est incertain} var result = []; // combiné dans un ensemble de produits / *** publier un attribut sélectionné pour un produit, qui est un tableau de spécification, et le nombre de tableaux est incertain * combiné dans différents produits en fonction de cet attribut sélectionné * / var selectSpec = [{Specname: 'Capacité', Specitems: ['16G', '64G', '128G']}, {Specname: 'Color', Specitems: ['Top Gold', 'Silver', 'Black', 'Pink']}, {Specname: 'Network', Specitems: ['United Kingdom',, 'Mobile', ',' TELLECOM ']. actuel) {if (index <lectSpec.Length - 1) {var Specitem = selectSpec [index]; var keya = Specitem.SpecName; var items = Specitem.Specitems; if (itels.length == 0) {run (index + 1, actuel);} pour (var i = 0; i <itels.Length; i ++) {if (!! {}; newmap = $ .extend (newmap, courant); newmap [keya] = items [i]; run (index + 1, newmap);}} else if (index == selectSpec.Length - 1) {var specitem = selectSpec [index]; var keya = Specitem.specname; var items = SPECTEM.Specitems; if (items.length == 0) {result.push (current);} pour (var i = 0; i <items.length; i ++) {if (! items [i]) Continuer; var newmap = {}; newmap = $ .extend (newmap, courant); newmap [keya] = items[i];result.push(newMap);}}}combine(0, {});console.info(result);/**Combined into product set* [Object { Capacity="16G", Color="Tulujin", Network="Universal"}, * Object { Capacity="16G", color="大天天天", * Object { Capacity="16G", color="大天天天天天天", * Object { Capacity="16G", color="大天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天� Object { Capacity="16G", Color="black", Network="Telecom"}, * Object { Capacity="16G", Color="pink", Network="Unicom"}, * Object { Capacity="16G", Color="pink", Network="Mobile"}, * Object { Capacity="16G", Color="pink", Network = "Telecom"}, * Object {Capacité = "64G", Color = "Telecom"}, * Object {Capacité = "64G", Color = "Telecom"}, * Object {Capacité = "64G", Color = "Treasury Gold", Network = "Telecom"}, * Object {Capacité = "64G", Color = "Silver", Network = "UNICO Capacité = "64G", Color = "Silver", Network = "Mobile"}, * Object {Capacité = "64G", Color = "Silver", Network = "Telecom"}, * Object {Capacité = "64G", Color = "Black", Network = "UniCOM"}, *, * Capacité = "64G", Color = "Black", Network = "Mobile"}, * Objet {CAPACITY = "64,", "Black", Network = "Mobile"}, * Objet {CAPACITY = "64,", "Black", Network = "Mobile"}, * Objet {CAPACITY = "64G Color="Black", Network="Telecom"}, * Object { Capacity="64G", Color="Black", Network="Telecom"}, * Object { Capacity="64G", color="pink", network="Unicom"}, * Object { Capacity="64G", color="pink", network="Mobile"}, * Object { Capacity="64G", color="pink", network="Telecom"}, * Object { Capacity="128G", color="Telecom"}, * Object { Capacity="128G", color="Telecom"}, * Object { Capacity="128G", color="Telecom"}, * Object { Capacity="128G", color="Telecom"}, * Object { Capacity="128G", Color="silver", Network = "UNICOM"}, * objet {capacité = "128g", color = "argent", réseau = "mobile"}, * objet {capacine = "128g", color = "argent", réseau = "télécom * Object {Capacité = "128G", Color = "Black", Network = "Telecom"}, * Object {Capacité = "128G", Color = "Pink", Network = "UNICOM"}, * Object {Capacité = "128G", Color = "Pink", Network = "Mobile"}, * Object {Capacité = "128G", Color = "Pink", Network = "Télécommunications"}] * / </ script>Ce qui précède est le contenu du produit publié par le produit cartésien basé sur la mise en œuvre de JS qui vous a été introduit. J'espère que cela vous sera utile. Dans le même temps, je vous suis très reconnaissant pour votre soutien au site Web du réseau Wulin. Je crois que nous ferons mieux!