これはあなたのために働くかもしれません:
function getValue(id){
return (!isNaN(aa[id])) ? aa[id] : undefined;
}
または、次の一般的なソリューションをお勧めします。
function getValue(hash,key) {
return Object.prototype.hasOwnProperty.call(hash,key) ? hash[key] : undefined;
}
次の点に注意してください。キーは実際には属性の名前であるため、キーは内部で文字列に変換されます。
var test = {
2: "Defined as numeric",
"2": "Defined as string"
}
alert(test[2]); // Alerts "Defined as string"
オブジェクトを使用しようとする場合:
var test = {}, test2 = {};
test[test2] = "message"; // Using an object as a key.
alert(test[test2]); // Alerts "message". It looks like it works...
alert(test[test2.toString()]);
// If it really was an object this would not have worked,
// but it also alerts "message".
常に文字列であることがわかったので、次のように使用します。
var test = {};
var test2 = {
toString:function(){return "some_unique_value";}
// Note that the attribute name (toString) don't need quotes.
}
test[test2] = "message";
alert(test["some_unique_value"]); // Alerts "message".