ここにJavaScriptがあります。この癖を考慮し、(これを共有するためのM. Staveleyのおかげで)this awesome postからリッピング:値が削除されたときに配列がアンセットされない - または配列の数を取得する最善の方法?
var colours = ['red', 'green', 'blue']
// is red really in the array?
console.log(colours.indexOf('red') > -1); // outputs true.
// remove red, it's going out of fashion!
delete colours[colours.indexOf('red')];
console.log(colours.indexOf('red') > -1); // outputs false
console.log(colours.length) // length is still three, remember it's javascript!
最終行は何のバグを私にあります。この気まぐれは私の好奇心を最大限に引き出し、colours
の実数にアクセスするためのエレガントな方法は何ですか?
を使用し、その配列内の値だけでなく、スペースを削除するには、これは仕様で定義されている場所を知っていますか? [delete'のセクション](http://es5.github.com/#x8.12.7)を見ると、配列に適用された動作については何も見つかりません。 –
@JamesAllardice [類似の回答](http://stackoverflow.com/a/500617/575527)もこれを言及しています。 deleteはアイテムを 'undefined'にします。まだ値であるので、スペースを保持し、配列の長さを変更しません。やってみて。 – Joseph
これは何が起こるのか知っていますが、どうしてそれが起こるのか尋ねています。この動作は仕様で定義されていますか?その答えはあなたのものと同じ行動を示すだけです。 –