0
トレース(suallar); - 2回書かれています 初めて - ここではすべての要素が表示されていますsuyar 2回目 - これは私が操作したり操作していなかったものの、このアレーが空であると見えますArray.splice()ドキュメントを1として配列がNULLであるか、わからないか
var suallar:Array = new Array();
var i:int;
var cavablar:Array=new Array();
suallar.push(["sual1", "duz1", "sehv11", "sevh12", "sevh13","sevh14"]);
suallar.push(["sual2", "duz2", "sehv21", "sevh22","sevh23","sevh24" ]);
suallar.push(["sual3", "duz3", "sehv31", "sevh32","sevh33","sevh34"]);
suallar.push(["sual4", "duz4", "sehv41", "sevh42","sevh43","sevh44"]);
suallar.push(["sual5", "duz5", "sehv51", "sevh52","sevh53","sevh54"]);
var cavablar_temp:Array = suallar.concat();
for (i=0; i<suallar.length; i++){
cavablar_temp[i].shift();
}
trace (suallar);
for (i=0; i<suallar.length;i++){
var number_array:Array = cavablar_temp[i];
var final_array:Array = [];
var count_selected:int = 5;
for (var u = 0; u < count_selected; u++)
{
if (number_array.length == 0)
{
break;
}
else
{
final_array.push(number_array.splice(Math.floor(Math.random() * number_array.length), 1)[0]);
}
}
cavablar.push(final_array);}
trace(cavablar.join("\n"));
trace (suallar);
これは、number_arrayから要素を削除し、final_arrayにプッシュします。それはsuallar配列にどのように影響しますか? – user1212216
suallarは 'Array'オブジェクトの' Array'です。 'Array'オブジェクトへの参照のみを含み、実際の数は含みません。コピーしないで 'suallar'から' Array'オブジェクトをつかんで 'splice()'のようなインプレース操作で修正すると、元の 'suallar'配列に反映されます'suallar'は' splice'で修正しているものと全く同じ*メモリです)。 – lunixbochs
そうですよ!しかし、私は書いた - var cavablar_temp:Array = suallar.concat(); - そして、その時点の後にcavablar_temp配列で操作します:)でも同じです。 – user1212216