如何在JavaScript中定义对象的数组的数组?以下代码写法是否正确?
如何在JavaScript中定义对象的数组的数组?顺便帮你看代码问题
嘿,我来帮你理清楚这个问题~首先得先纠正你给出的代码里的错误,再一步步说正确的写法:
你的代码哪里错了?
你写的这段代码是语法错误的:
var A1 = [ B1 : [ { Text: 'Home', name: "i do not know" }, { Text: 'Taj', name: "you may know" } ], B2 : [ { Text: 'Homeone', name: "i do not knows" }, { Text: 'Tasj', name: "you may knows" } ] ]
问题出在:你用了数组的方括号[],但里面却写了B1: ...这种键值对——数组是靠索引排序的集合,只能用逗号分隔元素,不能用键值对;而键值对应是对象的语法,得用大括号{}来包裹才行。
正确的写法分两种场景(看你实际需求)
场景1:这应该是你想要的——属性为对象数组的对象
看起来你是想创建一个叫A1的对象,里面有B1、B2两个“分组”,每个分组里是一堆对象组成的数组。那正确的写法应该是这样:
var A1 = { B1: [ { Text: 'Home', name: "i do not know" }, { Text: 'Taj', name: "you may know" } ], B2: [ { Text: 'Homeone', name: "i do not knows" }, { Text: 'Tasj', name: "you may knows" } ] };
用起来也很方便:比如想拿B1里第一个对象的Text,直接写A1.B1[0].Text就能得到'Home';想取B2里第二个对象的name,就写A1.B2[1].name。
场景2:真正的「对象的数组的数组」(纯数组嵌套)
如果你确实需要的是“数组里装数组,数组里再装对象”的纯嵌套数组结构,那写法是这样的:
var A1 = [ [ { Text: 'Home', name: "i do not know" }, { Text: 'Taj', name: "you may know" } ], [ { Text: 'Homeone', name: "i do not knows" }, { Text: 'Tasj', name: "you may knows" } ] ];
这种结构下,访问元素就得靠索引了:比如想拿第一个子数组里的第一个对象的Text,写A1[0][0].Text就行。
小提醒
- 对象的属性名如果是像B1、B2这种合法的标识符,不用加引号;要是属性名有空格、连字符这类特殊字符,就得用引号包起来,比如
'B-1'。 - 数组是有序的,适合按顺序遍历;对象是按属性名访问的,适合做分组归类,你可以根据自己的实际需求选对应的结构~
内容的提问来源于stack exchange,提问作者giveJob
相关产品推荐
相关产品推荐

