配列の要素とオブジェクトのプロパティはdelete演算子を使って削除可能である。
しかし、次のようにdelete演算子の挙動が複雑である。
私は、挙動が複雑なdelete演算子は使わないことにする。代わりにMap Objectを使うことにする。
const my = {};
my.aa = {};
my.aa["ab"] = 100;
my.aa["abc"] = 200;
my.aa["abcd"] = 300;
console.log("my.aa.length=" + Object.keys(my.aa).length); //3
console.log("my.aa.length=" + my.aa.length); //undefined
console.log("my.aa[abc]=" + my.aa["abc"]); //200
delete my.aa["abc"];
console.log("my.aa[abc]=" + my.aa["abc"]); //undefined
console.log("my.aa.length=" + Object.keys(my.aa).length); //2
console.log("my.aa.length=" + my.aa.length); //undefined
const aa = [];
aa[0] = 100;
aa[1] = 200;
aa[2] = 300;
console.log("Object.keys(aa).length=" + Object.keys(aa).length); //3
console.log("aa.length=" + aa.length); //3
console.log("aa[1]=" + aa[1]); //200
delete aa[1];
console.log("aa[1]=" + aa[1]); //undefined
console.log("Object.keys(aa).length=" + Object.keys(aa).length); //2
console.log("aa.length=" + aa.length); //3