1

私は2つの配列を持つjavascriptプロジェクトに取り組んでいます1.要素2.要素オーダー; elementsOrder 配列には各要素の名前が含まれ、要素配列には各要素のすべてのプロパティが含まれます。各配列から1つの要素を削除したい場合は、「delete」ビルドイン関数を使用しますが、要素を削除せずに未定義に設定するだけなので、スプライスメソッドを使用して未定義の要素を押し出しますが、そうではありません動作しません。

これはソースです:

var s1 = elementsOrder.indexOf(id);
delete elements[s1];
delete elementsOrder[s1];

それは仕事をし、要素を1つずつ「未定義」にスムーズに設定しますが、私がそうすると:

var s1 = elementsOrder.indexOf(id);
delete elements[s1];
delete elementsOrder[s1];
elements.splice(s1, 1);
elementsOrder.splice(s1, 1);

単に splice メソッドを使用しても機能しません

var s1 = elementsOrder.indexOf(id);
elements.splice(s1, 1);
elementsOrder.splice(s1, 1);

私は Javascript Canvas プロジェクトでこのコードを使用して、いくつかのキャンバス オブジェクトをアニメーション化します。そのため、「削除」がスムーズに機能し、要素を 1 つずつ「定義解除」し、スプライスがスムーズに機能せず、配置しない場合を簡単に確認できます。要素を 1 つずつ取り出す

http://jsfiddle.net/7ZuuZ/を参照してください。下から 3 番目の関数である関数 animate に注意してください。

4

1 に答える 1

8

そもそもスプライスしないのはなぜですか?

var s1 = elementsOrder.indexOf(id);
elements.splice(s1,1);
elementsOrder.splice(s1,1);

ここまでする必要はありませんdelete

于 2012-09-19T18:47:03.903 に答える