1. ホーム
  2. javascript

[解決済み] 'var array = {}' のときの「TypeError: array.splice is not a function」の解決方法は?[重複しています]。

2022-02-18 23:53:24

質問

<ブロッククオート

重複の可能性があります。
javascriptオブジェクトからプロパティを削除する方法
JavaScriptのHashmapに相当

私はjQueryを使っていますが、このように変数を処理しています。

var array = {};

array[an_object]      = something
array[another_object] = something_else
array[...]            = ...

を実行しようとすると splice メソッドを array を取得します。 TypeError: array.splice is not a function . 私が意図しているのは an_object キーとそのすべてのコンテンツが array 変数を使用します。

どうやったら作れるの?


備考 : を実行すると console.log(array[an_object]) (同じことが another_object および他のすべてのオブジェクト)を取得します。

[Object { label="str1",  value=1 }, Object { label="str2",  value=2 }, { label="strN",  value=N }]

解決方法は?

まず、変数にどんな名前をつけるか。その名前は array を使用している場合、そのオブジェクトを作成するために使用すると誤解を招きます。

var myObject = {};

myObject[an_object]      = "xyz";
myObject[another_object] = "abc";

ここで、オブジェクト内のエントリーを削除するために delete ステートメントを使用します。

delete myObject[an_object]; // Returns true / false if the deletion is a success / failure
console.log(myObject[an_object]) // Returns undefined


さて、そうは言っても、これは期待通りにはいかないでしょう。 myObject[an_object] は "abc" を含むことになります。
キーにオブジェクトを使わないでください。代わりに文字列を使用します。
に入力されたパラメーターは、すべて [] は文字列に変換されます。ですから、実際には、入力した myObject["[object Object]"]