1. ホーム
  2. javascript

[解決済み] 数値型をオブジェクトのキーとして使用する方法はありますか?

2022-07-06 14:16:03

質問

オブジェクトのキー名として数値型を使用すると、必ず文字列に変換されてしまうようです。実際に数値として格納する方法はあるのでしょうか? 通常のタイプキャスティングは機能しないようです。

例を挙げます。

var userId = 1;
console.log( typeof userId ); // number
myObject[userId] = 'a value';
console.dir(myObject);

ディレクションを出力します。

{
    '1': 'a value'
}

私とは 欲しい はこれです。

{
    1: 'a value'
}

アドバイス?

どのように解決するのですか?

いいえ、これは不可能です。 キーは常に文字列に変換されます。 参照 プロパティアクセサのドキュメント

プロパティ名は文字列でなければなりません。つまり、文字列でないオブジェクトはオブジェクトのキーとして使用することができません。数値を含む文字列でないオブジェクトは、toStringメソッドで文字列に型変換されます。

> var foo = {}
undefined

> foo[23213] = 'swag'
'swag'

> foo
{ '23213': 'swag' }

> typeof(Object.keys(foo)[0])
'string'