我有一個應用程序需要多個數據數組或每個數據長度可變。我計劃騎自行車並顯示每個數組的每個數據組合。我的第一個傾向是讓一個數字代表每個數組的狀態,因爲我知道組合的數量是每個數組的元素數量的乘積。表示許多陣列的唯一索引的數字
因此,例如:
A = [0,1,2,3]
B = [0,1,2,3]
C = [0,1]
所以4×4×2 = 32個組合我需要表示
我已經設法通過使用每個array.length施加模和分裂到一個給定的索引來表示所有狀態。我的問題是它的排序不好(請參閱下面的代碼片段)。有沒有人解決了類似的問題,或知道我可以如何改變算法以獲得它?
function multiArrayIndex(index, ...args) {
var arrays = args.slice();
var output = [];
for (var i = 0, curIndex = index; i < arrays.length; i++) {
var curArray = arrays[i];
var valueIndex =(curIndex % curArray.length);
output.push(curArray[valueIndex]);
curIndex = Math.ceil(curIndex/curArray.length);
}
return output;
}
demoP = document.getElementById("demo");
for(var i = 32; i>=1; i--){
\t demoP.innerHTML = demoP.innerHTML + i + " - " + multiArrayIndex(i, [0,1,2,3], [0,1,2,3], [0,1]) + "<br />";
}
<p id="demo"></p>
「排序好」是什麼意思?你在尋找什麼? – amflare
一個索引,如果遞增,將以可預測的方式遞增/遞減其中一個底層數組。所以也許如果我的片段生產 32-0,0,0 31-1,0,0 30-2,0,0 29-3,0,0 28-0,1,0 27-1 ,1,0 26-2,1,0 25-1,1,0 24-2,1,0 23-3,1,0 22-0,2,0 這是否更有意義? –