Antes de apresentar o texto principal, adicionarei algum conhecimento a você:
Algoritmo de produto cartesiano JS
Gerar produto cartesiano a partir do objeto ou matriz fornecido
// Função de combinação de produtos cartesiana Descartes (list) {// pai Índice anterior; contagem de contagem de contagem de contagem var point = {}; var resultado = []; var pindex = null; var tempcount = 0; var temp = []; // gera objetos de ponteiro com base nas colunas de parâmetros para (var Índice em {{if (typeof list [index] {'Parent': Pindex, 'count': 0} Pindex = index;}} // Estrutura de dados monofimensional retorna diretamente se (pindex == null) {return list;} // geração dinâmica do produto cartesiano while (true) {for (var index in list) {tempcount = ponto [índice] ['count']; temp.push (list [index] [tempcount]);} // pressione no resultado da matriz resultado.push (temp); temp = []; // verifique o problema máximo do valor do ponteiro (true) {if (ponto [index] ['count'] 1> = list [index] .lntngth) {Point [Point [Índice] ['count']. ponto [index] ['pai']; if (pindex == null) {return resultado;} // atribui pai a verificar novamente index = pindex;} else {point [index] ['count'] ++; break;}}}}}}}Ok, o algoritmo JS Cartesian Generation é apenas para colocar as bases para o texto a seguir. Não vou dizer muito, então voltarei ao ponto.
1. Descrição dos requisitos
A função de liberação do produto dos sites de comércio eletrônico, semelhante à página Detalhes do produto do JD.com, como mostrado na figura abaixo, como é uma função tão selecionável gerada no plano de fundo? De fato, o iPhone 6 que você vê não é apenas um produto quando é lançado, mas muitos, porque o preço de cada iPhone 6 selecionado é diferente; portanto, ao publicar o produto, esses itens opcionais são selecionados de vários atributos e valores de atributos. O problema é que o número de atributos selecionados durante a publicação é diferente e os valores de atributo também são diferentes. Em seguida, o número de produtos gerados é combinado com base em atributos e valores de atributos.
2. Envie diretamente o código
<Cript>/*** Tipo de atributo do produto*O número de atributos é incerto*/var spec = function (specName, specItems) {this.specname = SpecName; //Attribute name this.specItems = specItems;//Numerical value is an array, the number of arrays is uncertain}var result = [];//Combined into product set/*** Publish an attribute selected for a product, which is a specification array, and the number of arrays is uncertain* Combined into different products based on this selected attribute*/var selectSpec = [{SpecName: 'Capacidade', SpecItems: ['16G', '64G', '128G']}, {SpecName: 'Color', SpecItems: ['top Gold', 'Silver', 'Black', 'Pink']}, {SpecName: 'Redes', Specitems: ['United'; atual) {if (index <selectSpec.Length - 1) {var specItem = selectSpec [index]; var keya = specItem.specname; var Itens = specItem.specItems; if (items.length == 0) {run (index+1, atual); {}; newmap = $ .extend (newmap, atual); newmap [keya] = itens [i]; run (index + 1, newmap);}} else if (index == selectSpec.length - 1) {var speciTem = selectSpec [index]; var keya = specitem.specname; var itens; specItem.specItems; if (items.length == 0) {result.push (atual);} para (var i = 0; i <items.length; i ++) {if (! itens [i]) continua; var newmap = {}; newmap = $. 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"}, * objeto {Capacidade = "64G", color = "Telecom"}, * objeto {Capacidade = "64G", color = "Telecom"}, * objeto {Capacate = "64G", "64G =" Treasury Gold, Network = "Telecom" "}, * objeto {Capacidade = 64G "g =" Capacidade = "64G", color = "prata", rede = "móvel"}, * objeto {Capacidade = "64G", color = "prata", network = "Telecom"}, * objeto {Capacidade = "64g", color = "preto", network = "unicom" { * objeto {= "64g", "", "Retwork =" UNICOM "{ * {{{{{{) 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"}, * objeto {Capacidade = "128G", color = "Telecom"}, * objeto {Capacidade = "128G", color = "Telecom"}, * objeto {Capacidade = "128g," Color = "Telecom"}, * Object {= "128G", Color = "Telec" "}, * objeto {=" 128g ", color =" " network = "unicom"}, * objeto {capacidade = "128g", color = "prata", network = "móvel"}, * objeto {Capacidade = "128G", color = "prata", network = "Telecom"}, * object {Capacidade = "128g", color = "Black", "=" "" unicom ", {object =" 128g ", color =" ", network =" "unicom",},, * objeto {"128g", color = "", "neth =" " * Objeto {Capacidade = "128G", Color = "Black", Network = "Telecom"}, * Objeto {Capacidade = "128G", Color = "Pink", Network = "Unicom"}, * Objeto {Capacidade = "128G", Color = "Pink", Network = "Mobile"}, * Network = "Telecomunicações"}]*/</script>O acima exposto é o conteúdo do produto lançado pelo produto cartesiano com base na implementação do JS introduzida a você. Espero que seja útil para você. Ao mesmo tempo, sou muito grato a você pelo seu apoio ao site da Wulin Network. Eu acredito que faremos melhor!