請檢查我的編碼:AS3 - 腳本錯誤在陣列
function createRandomList():void
{
var newlist:Array = [0,1,2];
var curlist:Array = item[selectedlevel - 1] //selectedlevel = 1;
var normal:int = curlist[0];
var tempboo1:Boolean = false;
var tempboo2:Boolean = false;
var tempboo3:Boolean = false;
while (curlist[0] + curlist[1] + curlist[2] > 0)
{
if (Number(curlist[0]) == 0 && tempboo1 == false)
{
newlist.splice(newlist.indexOf(0), 1);
tempboo1 = true;
}
if (Number(curlist[1]) == 0 && tempboo2 == false)
{
newlist.splice(newlist.indexOf(1), 1);
tempboo2 = true;
}
if (Number(curlist[2]) == 0 && tempboo3 == false)
{
newlist.splice(newlist.indexOf(2), 1);
tempboo3 = true;
}
var temp:int = Math.floor(Math.random()*(newlist.length));
curlist[temp] -= 1;
generatedlist.push(Number(newlist[temp]));
trace(item);
}
while (normal > 0)
{
var temp2:int = Math.floor(Math.random() * 3) + 1;
generatednormal.push(Number(temp2));
normal--;
}
}
我的項目是[[5,0,0],[10,0,0]];
卻成了[[0,0,0],[0,0,0]];
我只想重複陣列項目是一個新的變量curlist
之後。
每次追蹤時,返回item [0] [0]遞減1,我只想使用curlist作爲臨時數組來計算基於item [0]的新隨機數組。
輸出繼電器:
4,0,0,10,0,0
3,0,0,10,0,0
2,0,0,10,0,0
1,0,0,10,0,0
0,0,0,10,0,0
他們之間有任何聯繫,或者是我的問題嗎?請幫忙!如果您需要更多信息,請評論我!
謝謝!那個函數真的起作用了 –
對於任何人來說,這個答案磕磕絆絆 - 要知道這個方法比使用'.slice()'慢10-15倍左右。 – Marty
當您的數組中沒有基元時,您的深度克隆方法會變得非常短暫。但對於數字等,這是一個簡單的解決方案,儘管如馬蒂所言,儘管速度很慢。 – Discipol