例如,假设我有一个包含州和城市的JSON对象。像这样
var obj = {
states : [
{'state1' :
{cities : ['city', 'another']}
}
]
}
现在假设我们的脚本通过执行obj.states.push(stateVar)
我们如何将城市添加到这个新创建的州?我尝试了obj.states[1].push(cityVar)
或obj.states[1].cities.push();
之类的内容,但这样做不是函数错误。
答案 0 :(得分:2)
它闻起来好像你的结构有点偏。你可能想要这样的东西:
var obj = { states : {'state1' : {cities : ['city', 'another']} } }
obj.states[newState] = {cities : ['even', 'more', 'cities']}
obj.states[newState].cities.push('again')
答案 1 :(得分:1)
您可以将states
更改为this answer建议的对象,也可以将其更改为此表单 -
var obj = {states : [
{ name: 'state1', cities : [ 'city1', 'city2'] },
{ name: 'state2', cities : [ 'city1', 'city2'] }
]}
考虑一下,根据你的结构,如果你只有一个状态对象,除非你知道州名,否则你无法访问它的城市! (这是可能的,但它变得丑陋)
取决于您的用例,您需要Object还是Array。对象适用于按键快速查找,而数组适用于枚举,并且它们维护顺序。 (对象在大多数实现中也保持顺序,但它不符合规范,因此无法保证。)