使用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
答案 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"
答案 4 :(得分:0)
另一个选择可能是使用稀疏数组:
let main = [, { type: [, ['Value1', 'Value2'], ['Value3', 'Value4'] ] } ];
console.log(main[1].type[1][0]);