Javascript 从JSON数组转换为对象后未定义的值
我有一个JSON数组,其中一个对象由节点和链接组成Javascript 从JSON数组转换为对象后未定义的值,javascript,Javascript,我有一个JSON数组,其中一个对象由节点和链接组成 data = [Object]=[ { nodes: Array[..] ,links: Array[…] } ] 这一切都很好,但对于访问链接,例如,我必须使用数据[0]。链接,这有点烦人。我希望数组是一个对象,这样data.links就可以访问这些链接。我已尝试设置: data = data[0]; 但是对象数组data.links显示为“undefined”。似乎在访问特定元素时会显示值,例如data.links[3]。name。为什
data = [Object]=[ { nodes: Array[..] ,links: Array[…] } ]
这一切都很好,但对于访问链接,例如,我必须使用数据[0]。链接,这有点烦人。我希望数组是一个对象,这样data.links就可以访问这些链接。我已尝试设置:
data = data[0];
但是对象数组data.links显示为“undefined”。似乎在访问特定元素时会显示值,例如data.links[3]。name
。为什么呢
编辑:
更具体地说:
如果数据=[{节点:数组[…],链接:数组[…]}]=>
console.log(data[0].links); //shows the data[0].links[0].name = value in the console
如果数据={节点:数组[…],链接:数组[…]}=>
console.log(data.links); //shows data[0].links[0].name = undefined
但有趣的是
console.log(data.links[0].name); //shows the correct value.
有两种解决方案:
如果控制JSON输出,只需删除基本上将对象包装在数组中的括号[]
data = { nodes: [...] ,links: [...] };
如果不控制JSON,只需将数组的零索引分配给实际要使用的变量即可
json = [ { nodes: [...] ,links: [...] } ];
data = json[0];
不幸的是,“links”是一个数组。要访问该数组的成员,您需要访问其索引值。此符号是什么?在JS中,
[Object]
是一个包含内置对象构造函数的数组,数组[foo]
查找数组
构造函数上的属性,该构造函数的名称是计算foo
的结果,然后对象数组data.links显示为“undefined”-如何显示?请展示更多的代码,也许还有一个更真实的数据示例,它实际上是有效的JS。对于您显示的数据,在执行data=data[0]
之后,如果您说data.links
,它将为您提供链接数组,因此您必须使用data.links[0]
等访问各个链接(顺便说一句,您的问题中没有JSON-JSON是字符串格式)@NNNN:我编辑这些问题是为了澄清问题。谢谢你的回答,不加括号直接设置就可以了。但是,在开发人员工具中查看对象时,对于节点和链接数组中未定义的值,我仍然存在相同的问题。例如:data.nodes[1].name=“undefined”。@graphmeter-这是因为节点
是一个数组,没有名称
属性-数组中的项有一个名称
属性(可能是;您在问题中没有显示它)。您必须说出data.nodes[0]。第一个节点的名称为;在循环中使用一个变量依次访问每个变量。