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!