C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Javascriptの連想配列でキーに数値を使いたい


(過去ログ 173 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■99685 / inTopicNo.1)  Javascriptの連想配列でキーに数値を使いたい
  
□投稿者/ aya (1回)-(2022/05/12(Thu) 11:25:33)

分類:[JavaScript] 

こんにちは。
JavaScriptの連想配列で質問です。
通常、連想配列のキーには文字列を使うというイメージがあるのですが、
キーに文字列ではなく数値(10とか100とか)を使いたいという場面が出て来ました。

キーとして使用したい数値は1から1000程度の整数ですが、
キーとして使いたい数値が、例えば10の次は100のようにかなり飛び飛びなので、
通常の配列を使うのはあまり適切ではない(不要な要素がたくさん出来てしまう)
と考えたのです。

連想配列のキーに数値を使ったスクリプトをChromeで試してみた所、
とりあえず、数値によるキー追加もキーアクセスもできたようですが、
これはJavaScriptの仕様として正しい使い方なのでしょうか?
JavaScript実行側で自動的に数値キーを文字列化して扱うので、
とくに気にすることはないのでしょうか
それとも、本来は数値を明示的に文字列化するのが正しいお作法なのでしょうか?
各ブラウザで、ここら辺の動作の違いはあるのでしょうか?
引用返信 編集キー/
■99686 / inTopicNo.2)  Re[1]: Javascriptの連想配列でキーに数値を使いたい
□投稿者/ kiku (262回)-(2022/05/12(Thu) 12:04:08)
No99685 (aya さん) に返信
> JavaScriptの連想配列で質問です。

キーに数字を指定する場合と、文字列を指定する場合では意味が違うようです。
https://wordpress.ideacompo.com/?p=10239
引用返信 編集キー/
■99687 / inTopicNo.3)  Re[2]: Javascriptの連想配列でキーに数値を使いたい
□投稿者/ Hongliang (1238回)-(2022/05/12(Thu) 12:23:11)
最近のJavaScriptでは明示的に連想配列を扱うMapオブジェクトが用意されています。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
// IE11でもサポート。
角括弧でアクセスするのではない(get()/set()でアクセス)のでちょっと慣れが必要かもしれませんが。
引用返信 編集キー/
■99688 / inTopicNo.4)  Re[2]: Javascriptの連想配列でキーに数値を使いたい
□投稿者/ aya (2回)-(2022/05/12(Thu) 14:03:55)
No99686 (kiku さん) に返信

> キーに数字を指定する場合と、文字列を指定する場合では意味が違うようです。
> https://wordpress.ideacompo.com/?p=10239

ありがとうございます。
おそらく、配列をvar arr = []; のように角括弧を使って初期化していれば
キー(インデックス)が数値か文字列かにより異なる結果になるのだと思いますが、
今回は、var arr = {}; のように波括弧で連想配列的な初期化を行っているので、
ご教示頂いたサイトの「Objectを意識した配列」の項のようになり、
・キー追加時にはキーの数値がJavaScript側で自動的に文字列として扱われた
・キーアクセスの場合も、キーとして指定した数値をJavaScript側で自動的に文字列として扱った
という理解でよいでしょうか?
それであれば、こちらとしては問題ないのかな、と思っています。
引用返信 編集キー/
■99689 / inTopicNo.5)  Re[3]: Javascriptの連想配列でキーに数値を使いたい
□投稿者/ aya (3回)-(2022/05/12(Thu) 14:09:24)
No99687 (Hongliang さん) に返信
> 最近のJavaScriptでは明示的に連想配列を扱うMapオブジェクトが用意されています。
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map
> // IE11でもサポート。
> 角括弧でアクセスするのではない(get()/set()でアクセス)のでちょっと慣れが必要かもしれませんが。

ありがとうございます。
使い方がDictionary的なので、こちらの方がいいかも知れません。
ちょっと試してみます。
引用返信 編集キー/
■99690 / inTopicNo.6)  Re[4]: Javascriptの連想配列でキーに数値を使いたい
□投稿者/ aya (4回)-(2022/05/12(Thu) 15:17:43)
Mapオブジェクトでも、やりたいことが実現できました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -