QA@IT

JavaScriptの連想配列における削除

5794 PV
TotalArray = [佐藤: Array[1],山田: Array[1]]

佐藤: Array[1]
0: "38-43"
山田: Array[1]
0: "46-50"

上記のように、TotalArrayは"佐藤"と"山田"というkeyに対して連想配列をvalueに取っています。
この時、"佐藤"というkeyと対応するvalueを削除するにはどうしたらよいのでしょうか?
TotalArrayのlengthは減らしたいので、spliceを使うと思うのですが、上手く行きません。

どうか力を貸してください。

  • 回答に追記しました。 -

回答

タイトルに連想配列と書いていますが、下記の表現は配列なのか連想配列なのか不明です。
TotalArrayはどのように作成していますか?
下記は何で表示したものですか?

TotalArray = [佐藤: Array[1],山田: Array[1]]

TotalArrayは"佐藤"と"山田"というkeyに対して連想配列をvalueに取っています。

また、各キーに対して、連想配列ではなく配列をvalueに取っています。


例えば連想配列なら以下になると思います。

TotalArray = { 佐藤: new Array({0: "38-43"}), 山田: new Array({0:"46-50"}) };

これであれば TotalArrayは

{佐藤: Array[1], 山田: Array[1]}

という表現になるかと思います。
これもまた、"佐藤"などに対して「配列」をvalueに取っている形です。

連想配列のみで構成するなら

TotalArray = { 佐藤: {0: "38-43"}, 山田: {0:"46-50"} };

こうなるかと思います。

なお、以下にした場合は要素数2の配列にはなりません。

var TotalArray = new Array()
TotalArray["佐藤"] = new Array({0: "38-43"});
TotalArray["山田"] = new Array({0: "46-50"});
console.log(TotalArray.length);   // 0です。
console.log(TotalArray.佐藤[0]);

いずれにしてもjavascriptにおいて連想配列は配列ではないのでlengthは取れないかと思います。

追記

TotalArray = { 佐藤: {0: "38-43"}, 山田: {0:"46-50"} };です。
この場合に「佐藤」というkeyとそのvalueを削除したいです。

deleteキーワードを使えば削除できると思います。

> TotalArray["佐藤"]
  Object {0: "38-43"}
> delete TotalArray["佐藤"]
  true
> TotalArray["佐藤"]
  undefined 
編集 履歴 (3)
  • すみません、きちんとした表現をすべきでした。対象となる連想配列は、TotalArray = { 佐藤: {0: "38-43"}, 山田: {0:"46-50"} };です。この場合に「佐藤」というkeyとそのvalueを削除したいです。 -
  • できました!ありがとうございます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。