Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示嵌套结构的名称?_Javascript_Json - Fatal编程技术网

Javascript 如何显示嵌套结构的名称?

Javascript 如何显示嵌套结构的名称?,javascript,json,Javascript,Json,我有以下数据并尝试了以下操作,但我无法以[对象对象]格式或json格式获取子值的名称(例如:Test1、Test5、Test10、Test20、Test50),也无法显示其长度(即5,表示我们有sub_值名称为5,因此其长度为5) 错误:无法读取未定义的属性“name” Cannot read property 'length' of undefined 请让我知道如何得到这个 创建。由于您的jsondata是一个数组(或者更好地指向数组),您还应该提及相同的索引。因此,为什么不尝试一下,并让

我有以下数据并尝试了以下操作,但我无法以
[对象对象]
格式或
json
格式获取
子值的
名称(例如:
Test1、Test5、Test10、Test20、Test50
),也无法显示其
长度(即5,表示我们有
sub_值名称
为5,因此其长度为5)

错误:
无法读取未定义的属性“name”

Cannot read property 'length' of undefined
请让我知道如何得到这个


创建。

由于您的
jsondata
是一个数组(或者更好地指向数组),您还应该提及相同的索引。因此,为什么不尝试一下,并让我知道这是否有效。请参阅下面的代码注释

console.log(jsondata[0]);//(3) Try this first
console.log(jsondata[0].sub_values[0].name);// Oh! You are onto something here.
console.log(jsondata[0].sub_values[0].length);// Now you realized you need to iterate an array!

如何迭代你问的数组?现在这是一个完全不同的问题,我的朋友!

你需要迭代jsondata来获得你想要的值。现在你正在访问一个不存在的数组上的属性。看看这个来迭代数组中的对象,等等:@Woodrow,很好,谢谢你的帮助。如果只想提取一级深度的子值,可以使用
const fn1=data=>data.reduce((acc,val)=>acc.concat(val.sub_values.map(elmt=>elmt.name)),[]);
。如果想提取任意深度的子值,可以将此函数修改为递归函数:
const fn2=data=>data.reduce((acc,val)=>acc.concat)(…val.sub_values.map(elmt=>(elmt.sub_values.length==0)?elmt.name:[elmt.name,….fn2([elmt]),[];
。尝试添加额外的数据层,例如,在当前一个空sub_值下添加更多sub_值,以查看差异。
console.log(jsondata[0]);//(3) Try this first
console.log(jsondata[0].sub_values[0].name);// Oh! You are onto something here.
console.log(jsondata[0].sub_values[0].length);// Now you realized you need to iterate an array!