所以你的问题是,你认为你在使用数组的时候正在使用hashmap。所以当你写这样的东西:
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
console.log(data["123"])
你会得到一个错误,因为你试图索引一个数组与字符串。正如你通过查看你的data
对象所看到的那样,它是一个包装hashmap的数组(这实际上是不必要的)。如果你真的打算使用这个对象正确,你需要写
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
console.log(data[0]["123"])
,它将打印[{'a': 10, 'b': 20, 'c': 30, 'd': 40}]
。
如果你想要一个新的密钥分配到data[0]["123"]
,因为你裹在数组中的值,以及,你需要写
var data= [{
'123': [{'a': 10, 'b': 20, 'c': 30, 'd': 40}],
'456': [{'a': 1, 'b': 2, 'c': 3, 'd': 4}]
}];
data[0]["123"][0]["assigned_at"] = 52 //or w/e you want here
我建议下探围绕你的价值观[]
包装并且只写
var data= {
'123': {'a': 10, 'b': 20, 'c': 30, 'd': 40},
'456': {'a': 1, 'b': 2, 'c': 3, 'd': 4}
};
data["123"]["assigned_at"] = 52 //or w/e
哪个会起作用。我认为你只是通过增加[]
来让你自己有点混淆你的价值观。
尝试数据[0] ['123'] – Jaaaaaaay
看起来'data'是一个包含单个对象的数组,其中包含一个对象,该对象返回时保存着键'123','456'。这是一个错字吗? 哦,'123'和'456'又是只有一个对象的数组 - 所以完整路径是:'data [0] [123] [0] [“a”]' – yoshi