integer
次のようにキーを使用して、javascript で連想配列を作成する必要があります。
a["10"] = "ten";
しかし、配列を作成すると、値が配列の10th
インデックスに配置され、長さ11の配列が作成されます。キーと値のペアにしたいです。オブジェクトを使用してこれを実行できることはわかっていますが、必要なのは配列のみです。
integer
次のようにキーを使用して、javascript で連想配列を作成する必要があります。
a["10"] = "ten";
しかし、配列を作成すると、値が配列の10th
インデックスに配置され、長さ11の配列が作成されます。キーと値のペアにしたいです。オブジェクトを使用してこれを実行できることはわかっていますが、必要なのは配列のみです。
JavaScript には連想配列がありません。JavaScript でこれを行う唯一の方法は、オブジェクトを使用することです。
var a = {
'10': 'ten'
};
ECMAScriptには関連付けられた配列があります1 - オブジェクト (および拡張により配列) は例です
ただし、配列の一部のプロパティは特別に扱われます。
配列オブジェクトは、特定のクラスのプロパティ名を特別に扱います。プロパティ名
P
(文字列値の形式) は、..ToString(ToUint32(P))
と等しい場合にのみ、配列インデックスです。P
..具体的には、名前が配列インデックスであるプロパティが追加されるたびに、必要に応じて長さプロパティが変更され、その配列インデックスの数値よりも 1 つ大きくなります..
したがって、arr = []
式arr["1"]
とは同じプロパティ名をarr[1]
参照します。(プロパティ名)は上から「1」で0なので、そのプロパティへの代入は、または2になります。P
length
arr.length
ToUint32(P)+1
この動作を変更することはできません。特別なプロパティを持ちたくないlength
場合は、配列の代わりに「通常の」オブジェクトを使用してください。ただし、Array.prototype
関数の多くは、プロパティを持つ任意のオブジェクト (いくつかの実装上の癖は別として)で使用でき、独自のプロトタイプとして使用するようにオブジェクトを作成できます。length
Array.prototype
そうは言っても、投稿は本当の問題が何であるかを述べていません。その特定の方法で実行する必要があると仮定する代わりに、意図が何であるかを説明することを検討してください。たとえば、なぜ a["10"]? オブジェクトがリストで使用される場合、「11個のアイテム」がある場合、何が問題になっていますか?
1この声明について議論する前に記事を読んでください: 名前の「配列」という用語は、順序付けられたシーケンスを意味するものではなく、長さの追加の概念やハッシュの使用などを排除するものでもありません。、それが何であるか、および特定の操作に必要な動作が何であるかを必ず指定してください。