在对象内的对象内创建数组

时间:2019-08-12 21:54:35

标签: javascript arrays object

使用Javascript,如何在对象内的对象内创建数组,以便将值存储在:main [1] .type [1] [0]

我已经尝试过,但是我的无效代码如下:

let main = []

main[1] = {type: {1:['Value1', 'Value2']}, {2:['Value3', 'Value4']}};

console.log(main[1].type[0][1]);

我希望main[1].type[1][0]'Value1',但它是undefined

5 个答案:

答案 0 :(得分:6)

您没有得到undefined。您有语法错误。逗号应该是分隔数组值或分隔对象条目。您在对象中有一个逗号,因此它后面应该有一个键,而不是{

main[1] = {type: {1:['Value1', 'Value2']}, {2:['Value3', 'Value4']}};
                                         |
                                         |
                           Remove the } and { around this comma

删除逗号周围的}{,以使{1:['Value1', 'Value2'], 2:['Value3', 'Value4']}成为具有两个键的单个对象:

const main = [];

main[1] = {type: {1:['Value1', 'Value2'], 2:['Value3', 'Value4']}};

console.log( main[1].type[1][0] );

答案 1 :(得分:1)

首先,您的声明是错误的,将不起作用。

{type: {}, {}}不是有效的JSON,您必须将其包装到[]中才能创建对象{type: [{}, {}]}的数组。

此外,您还需要添加一个级别:main[1].type[0][1][0]以获取到Value1的完整路径

let main = []
main[1] = {type: [{1:['Value1', 'Value2']}, {2:['Value3', 'Value4']}]};

console.log(main[1].type[0][1][0])

答案 2 :(得分:1)

您的问题是您无法创建带有数字对象的对象,而必须使用数组符号var variableName = [/*variable values here separated by commas*/]

这将解决您的问题:

let main = []

main[1] = {
  type: [
    ['Value1', 'Value2'], 
    ['Value3', 'Value4']
  ]
};

console.log(main[1].type[0][1]);

答案 3 :(得分:0)

简化您的问题,对象必须是“零个或更多对属性名称和一个对象的关联值”。问题代码中的第二个值没有键,导致未捕获的SyntaxError

这是一个对象文字,它返回您想要的结果:

const main = {
  1: {
    type: { 1: ['Value1', 'Value2'] },
    otherType: { 2: ['Value3', 'Value4'] },
  },
};
main[1].type[1][0] 
=> "Value1"

Object initializer docs

答案 4 :(得分:0)

另一个选择可能是使用稀疏数组:

let main = [, { type: [, ['Value1', 'Value2'], ['Value3', 'Value4'] ] } ];

console.log(main[1].type[1][0]);