メインテキストを紹介する前に、私はあなたにいくつかの知識を追加します:
JSデカルト製品アルゴリズム
指定されたオブジェクトまたは配列からデカルト製品を生成します
//カルテシアン製品の組み合わせ関数descartes(// parent prefore index; count pointer count var point = {}; var pindex = null; var tempcount = 0; var temp = []; //(var index in list] {index] = nix = '= n' = n '= =' = = 'オブジェクト') {'parent':pindex、 'count':0} pindex = index;}} //単一次元のデータ構造は、(pindex == null){return list;} //デカルト製品の動的生成while){var index in list){tempcount = {var index = point [index] ['count']; temp.push(list [index] [tempcount]);} // result array result.push(temp); temp = []; //最大ポインター値の問題を押してください(true){if(point [index] ['count']+1> = list [index] {point ['count' = 0; point [index] ['parent']; if(pindex == null){return result;} // index = pindex;} else {index] ['count'] ++;}}}}}}}}} else {index] ['count'] ++;}}}}}を確認するさて、JSデカルト生成アルゴリズムは、次のテキストの基礎を築くためだけです。あまり言いませんので、ポイントに戻ります。
1。要件の説明
下の図に示すように、jd.comの製品の詳細ページと同様のeコマースWebサイトの製品リリース機能は、バックグラウンドでどのように選択可能な機能が生成されますか?実際、あなたが見るiPhone 6は、それがリリースされたときに単なる製品ではなく、選択した各iPhone 6の価格が異なるため、製品を公開するときに、これらのオプションのアイテムは属性と属性値の束から選択されます。問題は、公開中に選択された属性の数が異なり、属性値も異なることです。次に、生成された製品の数は、属性と属性値に基づいて組み合わされます。
2。コードを直接アップロードします
<script>/***製品属性タイプ*属性の数は不確実です*/var spec = function(specname、specitems){this.specname = specname; //属性名this.specitems = specitems; //数値値は配列であり、配列の数は不確かです} var result = []; //は製品に選択された属性を出版します。 [{specname: 'caperage'、specitems:['16g'、 '64g' '、' 128g ']}、{specname:' color '、specitems:[' top gold '、' silver '、' black '、' pink ']}、{specname:' network '、specitems:[' unity kinguncoms '、' uned king '、' '' '' '' '、' 'nuction'、 '' 'nuction current(index <selectspec.length -1){var specitem = selectspec [index]; var keya = sectiTem.specname; var items = specitem.specitems; if(items.length == 0){run(index+1、current);} for(var i = 0; i <itemss.length; i+lent; var [i++ {}; newmap = $ .extend(newmap、current); newMap [keya] = items [i]; run(index + 1、newmap);}} else if(index == selectspec.length -1){var shoctitem = selectspec [index]; var keya = secietem.specname; var item.specname; specitem.specitems; if(items.length == 0){result.push(current);} for(var i = 0; i <items.length; i ++){if(!items [i])continue; var newmap = {}; newmap = $ .extend(newmap、current); items [i]; result.push(newmap);}}}} combine(0、{}); console.info(result);/** console.info(/** combined into gults set *」オブジェクト{容量= "16g"、color = "大天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天�オブジェクト{容量=" 16g "、color =" black "、network =" telecom "}、 * object {capiought =" 16g "、color =" pink "、network =" unicom "}、 * object {capitious =" 16g "、color =" pink "、network" Network = "Telecom"}、 * object {caperation = "64g"、color = "Telecom"}、 * object {capiought = "64g"、color = "Telecom"}、 * object {capiought = "64g"、color = "Treasury Gold"、Network = "Telecom"}、容量= "64g"、color = "silver"、network = "mobile"}、 * object {capiought = "64g"、color = "silver"、network = "telecom"}、 * object {capitious = "64g"、color = "black"、network = "unicom"}、 * object {capuation = "64g"、 "black =" black = "" black = "black =" black = "black =" black = "black =" black = "" color = "black"、network = "Telecom"}、 * object {容量= "64g"、color = "black"、network = "telecom"}、 * obje。 Network = "Telecom"}、 * object {capiought = "128g"、color = "Telecom"}、 * object {capiought = "128g"、color = "telecom"}、 * object {capiought = "128g"、color = "telecom"}、 * object {capuation = "128g"、color = "" Network = "Unicom"}、 * object {caperation = "128g"、color = "silver"、network = "mobile"}、 * object {容量= "128g"、color = "silver"、network = "テレコム"}、 * object {容量= "128g"、color = "black"、network = "unicom" * object {capipition = "128g"、color = "black"、network = "telecom"}、 * object {capious = "128g"、color = "pink"、 "unicom"}、 * object {capious = "128g"、color = "pink"、network = "mobile"}、 * objections = ""/"pink"、 "pink"、 "pink"/"pink"/"pink"/"/pink"上記は、紹介されたJS実装に基づいて、デカルト製品によってリリースされた製品の内容です。それがあなたに役立つことを願っています。同時に、Wulin NetworkのWebサイトへのご支援に感謝します。私たちはもっとうまくいくと思います!