代码之家  ›  专栏  ›  技术社区  ›  Mike

添加到JSON而不知道其结构

  •  0
  • Mike  · 技术社区  · 15 年前

    var obj = { states : [ {'state1' : {cities : ['city', 'another']} } ] }

    obj.states.push(stateVar)

    我们怎样才能把城市添加到这个新创建的州?我试过这样的方法 obj.states[1].push(cityVar) obj.states[1].cities.push(); 但这给出了一个结论,这不是一个函数错误。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Ignacio Vazquez-Abrams    15 年前

    闻起来好像你的身体有点不舒服。你可能想要这样的东西:

    var obj = { states : {'state1' : {cities : ['city', 'another']} } }
    obj.states[newState] = {cities : ['even', 'more', 'cities']}
    obj.states[newState].cities.push('again')
    
        2
  •  1
  •   Community CDub    8 年前

    你可以改变 states 作为对象作为 this answer 建议或您可以将其更改为此窗体-

     var obj = {states : [
         { name: 'state1', cities : [ 'city1', 'city2'] },
         { name: 'state2', cities : [ 'city1', 'city2'] }
     ]}
    

    想想看,根据你的结构,如果你只有一个州的对象,你不能访问它的城市,除非你知道州的名称!(这是可能的,但会变得难看)

    它取决于您的用例,您是想要一个对象还是一个数组。对象适合于通过键进行快速查找,而数组适合于枚举,并保持顺序。(对象在大多数实现中也保持顺序,但它不在规范中,因此不能保证。)