本文實例講述了javascript笛卡爾積算法實現方法。分享給大家供大家參考。具體分析如下:
這裡可根據給的對象或者數組生成笛卡爾積
//笛卡兒積組合 function descartes(list) { //parent上一級索引;count指針計數 var point = {}; var result = []; var pIndex = null; var tempCount = 0; var temp = []; //根據參數列生成指針對象 for(var index in list) { if(typeof list[index] == 'object') { point[index] = {'parent':pIndex,'count':0} pIndex = index; } } //單維度數據結構直接返回 if(pIndex == null) { return list; } //動態生成笛卡爾積 while(true) { for(var index in list) { tempCount = point[index]['count']; temp.push(list[index][tempCount]); } //壓入結果數組 result.push(temp); temp = []; //檢查指針最大值問題 while(true) { if(point[index]['count']+1 >= list[index].length) { point[index]['count'] = 0; pIndex = point[index]['parent']; if(pIndex == null) { return result; } //賦值parent進行再次檢查 index = pIndex; } else { point[index]['count']++; break; } } } }
希望本文所述對大家的javascript程序設計有所幫助。