0

私は初めて JavaScript で OOP を実装しようとしていますが、オブジェクトの配列をこの関数に送信しようとすると、再帰関数に行き詰まりました。だから、私はいくつかのプロパティを持つ「ピティック」クラス(ピティックはルーマニア語でミゼットを意味します)を持っています:

function Pitic(piticID) {
this.id = piticID;
this.inaltime = null;
this.greutate = null;
this.genereazaGreutate();
this.genereazaInaltime();
}

私は今、いくつかのミゼットを生成し、それらを public の piticiCollection Array 変数に格納しています。「genereazaGreutate」と「genereazaInaltime」は、inaltime と greutate の値にランダムな値を生成する関数です。

var pitic = new Pitic(idPitic);
piticiCollection.push(pitic);

ミジェットの配列を関数に送信しようとすると、配列の最初の項目しか取得できないため、問題が発生します。

したがって、関数を呼び出す前に、4 つのオブジェクトを含む piticiCollection 配列があります

そして、piticiCollection をパラメーターとして関数を呼び出すとすぐに、3 つのミゼットが失われます。:( ほとんどのミゼットが消えました http://img201.imageshack.us/img201/5808/7od5.png

ps 下手な英語ですみません..

[編集] これが私の完全なコードのフィドルです: http://jsfiddle.net/WT7Ud/ 56 行目で関数を呼び出し、デバッガーが 60 行目に到達するとすぐに配列項目を失います。

4

3 に答える 3

0

determinaPerechiPosibileこの行で元の配列を変更しています:

colectieDePitici.splice(1, colectieDePitici.length);

特に、最初の要素以外をすべて削除しています。おそらくslice、再帰したい配列の部分を非破壊的に抽出するために使用する必要があります。

于 2013-10-24T00:01:12.747 に答える
0

Ted Hoppが述べたように、問題は行にあるようです

colectieDePitici.splice(1, colectieDePitici.length);

この行と組み合わせて:

determinaPerechiPosibile(colectieDePiticiCopy);

これらの 2 行がコメント化されている場合、配列は元の長さを維持します。

于 2013-10-24T00:17:00.157 に答える