js中关于json的获取值引申出方括号和点号的疑惑

var obj={ "programmers": [ { "firstName": "Brett", "lastName":"McLain", "email": "aaaa" },

  { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },

  { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

  ],

  "authors": [

  { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

  { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

  { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

  ]}
  

其中 obj.programmers[0].lastname 获取的就是“McLain”,那这样 obj[programmers][0][lastname]
这样全部改成方括号,可以吗? 那这样obj.programmers.0.lastname的话呢?有点晕了。。。按理来说第一种我更容易理解,比较方括号里面本来就是放下标号的,应该就是数字才对,然后点号对应key,但是我看有些人在方括号里放key,也可以?
还有就是我要修改value的话,上面三种方式也都可以吗?

阅读 3.7k
1 个回答

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects

一个对象的属性名可以是任何有效的 JavaScript 字符串,,或者可以被转换为字符串的任何东西,包括空字符串。然而,一个属性的名称如果不是一个有效的 JavaScript 标识符(例如,一个有空格或短横线,或者以数字开头的属性名),就只能通过方括号标记访问。

可以的是 obj["programmers"][0]["lastName"]obj.programmers[0].lastName

obj.programmers.0.lastName 0不是一个有效的标识符 所以不可行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题