ループ内で動的に構築される JavaScript オブジェクトがあります。反復中に既に存在する可能性のあるプロパティを新しいものに置き換えたいと思います-基本的にオブジェクトをJava HashSetのように扱います。
javascript オブジェクトに動的プロパティを追加し、後でそのオブジェクトを for in ループでループすると、そのプロパティの複数の値やその他の奇妙な動作が発生するのはなぜですか?
例:
var foo = {};
foo['bar'] = 'hello';
foo['bar'] = 'hola';
foo['bar'] = 'aloha';
foo['baz'] = 'some other thing';
var arr = [];
for(var prop in foo) { arr.push(foo[prop]) };
//2 entries (what I'd expect)
foo['bam'] = 'other other thing';
for(var prop in foo) { arr.push(foo[prop]) };
//5 entries (why?) the [bar] property should be overwritten right?
console.log(arr);
[ 'aloha',
'some other thing',
'aloha',
'some other thing',
'other other thing' ]
動的プロパティを使用して古い値を新しい値で上書きするにはどうすればよいですか?