본문을 소개하기 전에 몇 가지 지식을 추가하겠습니다.
JS 직교 제품 알고리즘
주어진 객체 또는 배열에서 직교 제품을 생성합니다
// Cartesian 제품 조합 함수 Descartes (list) {// 부모 이전 색인; count pointer count var point = {}; var result = []; var pindex = null; var tempcount = 0; var temp = []; // (var index in list) {index [index ') {index')) {index ')). { 'parent': pindex, 'count': 0} pindex = index;}} // 단일 차원 데이터 구조는 (pindex == null) {return list;} // (true) {for (var index) {tempcount = point [index] [ 'count']; temp.push (list [index] [tempCount]);} // 결과 배열 result.push (temp); temp = []; // 최대 포인터 값 문제를 확인하는 동안 (true) {if (point] [ 'count']+1> = list [색인]. POINT [index] [ 'parent']; if (pindex == null) {return result;} // 부모 할당을 다시 확인하려면 index = pindex;} else {point [index] [ 'count'] ++; break;}}}}}.자, JS 직교 세대 알고리즘은 다음 텍스트의 토대를 마련하는 것입니다. 나는 많이 말하지 않기 때문에 요점으로 돌아갈 것입니다.
1. 요구 사항 설명
아래 그림과 같이 JD.com의 제품 세부 정보 페이지와 유사한 전자 상거래 웹 사이트의 제품 출시 기능은 배경에서 어떻게 선택 가능한 기능이 생성됩니까? 실제로, 당신이 보는 iPhone 6은 출시 될 때 단순히 제품 일뿐 만 아니라 많은 사람들이 선택한 각 iPhone 6의 가격이 다르기 때문에 제품을 게시 할 때 이러한 선택적 항목은 여러 속성 및 속성 값에서 선택됩니다. 문제는 출판 중에 선택된 속성 수가 다르고 속성 값도 다르다는 것입니다. 그런 다음 생성 된 제품의 수는 속성 및 속성 값에 따라 결합됩니다.
2. 코드를 직접 업로드하십시오
<cript>/*** 제품 속성 유형*속성 수는 불확실합니다*/var spec = function (specname, specitems) {this.specname = specname; // 속성 이름 this.specitems = specitems; // 숫자 값은 배열이고, 배열 수는 불확실합니다} var result = []; // 제품 세트에 결합/*** 제품에 대해 선택한 속성을 사양 배열이며,이 선택한 속성을 기반으로 다른 제품에 결합 된*/var selectspec =. [{specname : 'caperation', specitems : [ '16g', '64g', '128g']}, {specname : 'color', specitems : [ 'Top Gold', 'Silver', 'Black', 'Pink'}, {Specname : 'Network', specitems : [ 'United index', 'telecom'); (index <selectspec.length -1) {var specitem = selectspec [index]; var keya = specitem.specname; var items = specitem.specitems; if (items.length == 0) {run (index+1, current);} for (var i = 0; i <initem.length; i ++) $ .Extend (newMap, current); newMap [keya] = 항목 [i]; run (index + 1, newMap);}} else if (index == sectspec.length -1) {var specitem = selectspec [index]; var keya = specitem.specname; specitem = specitem.specitems; if grenge.lenge); (var i = 0; i <initem.length; i ++) {if (! items [i]) 계속; var newMap = {}; newMap = $ .Extend (newMap, current); newMap [keya] = items [i]; result.push (newMap);}}} combine (0, 0, {}); {faction = "16g", color = "tulujin", Network = "Universal"}, * object {capacit = "16g", color = "大天天天", * object {capacit = "16g", color = "大天天天天天天", * 객체 {capact = "16g", color = "大天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天天 verivers {객체 {객체 ="16g ", 네트워크 ="telecom ","} "},"16g ". 용량 = "16g", color = "pink", network = "unicom"}, * object {paction = "16g", color = "pink", network = "mobile"}, * object {paction = "16g", color = "pink", network = "텔레콤"}, * object {capacit = "64g", color = "telecom"}, * 객체 {64g ", * color = "Telecom"}, * Object {capacity = "64g", color = "Treasury Gold", Network = "Telecom"}, * Object {capacit {congure = "64g", network = "unicom"}, * 객체 {용량 = "64g", color = "silver", * objects = "64g", "" "" "" "" "" "" ". Network = "Telecom"}, * Object {faction = "64g", color = "black", network = "unicom"}, * object {객체 {객체 {congry {color = "mobile"}, * object = "64g", color = "black", network = "telecom"}, * color {color {paction = ","64g ","64g ","64g ", 네트워크 = "Telecom"}, * Object {faction = "64g", color = "pink", network = "unicom"}, * object {객체 {객체 {congry {color = "mobile"}, * object = "64g", color = "pink", network = "telecom"}, * color {color = "}, * telecom" 용량 = "128g", color = "telecom"}, * object {capacit {paction {paction {paction {color = "Telecom"}, * Object {congure = "128g", color = "Telecom"}, * Object {paction {paction = "128g", color = "Silver", Network = "Unicom"}, * Objort = "128g", * {faction = "128g", color = "silver", network = "telecom"}, * object {capacit = "128g", color = "black", network = "unicom"}, * object {paction = "128g", color = "black", 네트워크 = "Mobile", * Object {object {객체 = "128g" 용량 = "128g", color = "pink", network = "unicom"}, * object {paction = "128g", color = "pink", network = "mobile"}, * object {paction = "128g", color = "핑크", 네트워크 = "Telecommunications"}] */</scrapt>위의 내용은 귀하에게 소개 된 JS 구현을 기반으로 Cartesian 제품이 출시 한 제품의 내용입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 동시에 Wulin Network 웹 사이트에 대한 귀하의 지원에 감사드립니다. 나는 우리가 더 잘할 것이라고 믿는다!