我有一个JavaScript对象文字:
var things = {
"a": {
7: {
"b": "asdf",
"z": {
1: {
"name": "Ship0",
"loa": 100,
"draft": 5000
},
2: {
"name": "Ship1",
"loa": 100,
"draft": 5000
}
}
},
8: {
"b": "fdsa",
"z": {
5: {
"name": "Ship0",
"loa": 100,
"draft": 5000
},
6: {
"name": "Ship1",
"loa": 100,
"draft": 5000
}
}
}
}
};
...稍后在函数中,我这样做:
function p_get_index_of_existing_ship(customer_id, ship_id)
{
return someotherfunctionof(ship_id, things["a"][customer_id]["z"]);
}
它在firefox中运行良好,但在IE(7,8)中,我得到“错误:'things.a [...]。z'为null或不是对象。
这不是在javascript中访问这种关联数组(对象)的正确方法吗?
答案 0 :(得分:2)
对象文字的键必须是有效的标识符名称。您的密钥是7
和8
,它们不是有效名称(因为第一个(也是唯一的)字符是数字)。我建议改用字符串:
"7": { ... }
编辑:我查看了规范......似乎数字文字是键的有效名称......但它仍然可能是IE不喜欢它们。尝试字符串,你会知道。
修改:试试这个:
function p_get_index_of_existing_ship(customer_id, ship_id)
{
// return someotherfunctionof(ship_id, things["a"][customer_id]["z"]);
things["a"][customer_id]["z"];
}
错误是否仍显示在IE中?
答案 1 :(得分:0)
问题是...[customer_id]
评估为未定义。
现在,找出原因。