問題は、JavaScript 配列を連想配列として使用していることですが、そうではありません。JavaScript 配列のインデックスは符号なし 32 ビット整数であるため、*strings** は使用できません。次のように配列を使用します
// I'm guessing that you meant to give numerical and not string values
var arr = [123, 456];
またはオブジェクトを使用する
var obj = {
'A string' : 123,
'Another string' : 456
};
'A string'
オブジェクトを使用し、と'Another string'
はオブジェクトのプロパティでありobj
、配列内の値のようにインデックスを付けることはできないことに注意してください。オブジェクトがプロパティを持っていることを確認するには、いくつかの方法があります。hasOwnProperty
if (obj.hasOwnProperty('A string')) {
// if obj has property 'A string' as a direct property
}
別のin
キーワードは
if ('A string' in obj) {
// if obj has a property 'A string' as a property (could be an inherited property too)
}
**ティムが指摘するように、文字列が 32 ビットの符号なし整数の文字列表現でない限り、ただし、多くの JavaScript 開発者は、わかりやすくするために整数の使用に固執すると言うと言っても過言ではないと思います。*