// 笛卡爾積算法
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;
}
}
}
}
js-笛卡爾基
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.