[英]how to output keys in a key value pair within nested arrays using constructor Javascript
在“项目”数组中,我想在“信息”数组中仅输出键: [ 'stringTwo', 'StringThree' ]
,还输出值String Three
let items = [ { string: 'string1', info: { stringTwo:'String Two', stringThree: 'String Three' }, size:3445 }, { string: 'string2', info: 'ruby files' }, { string: 'string3', info: '' }, { string: 'string4 without info key', } ];
我尝试了这两个代码:
data.forEach((data) => { if(data.info.constructor === Object) { console.log(Object.keys(data.info)); } }) data.forEach((data) => { if(data.info.constructor === Object) { console.log((data.info.stringThree)); } })
第一个应该输出Keys [ 'stringTwo', 'StringThree' ]
,第二个应该输出String Three
我想知道为什么在具有更多键值对的更大比例数组中既不起作用,又给我输入TypeError: Cannot read property 'constructor' of undefined
吗? 如果是这样,还有其他方法不使用构造函数吗?
您的大型阵列可能没有任何info
键。 为避免出现错误,您应该:
更改项目数组以放置info
键,即使是空的
要么
添加 typeof data.info !== "undefined"
条件,以在尝试访问每个项目之前检查是否在每个项目上定义了info
键。
这是一个工作示例:
let items = [ { string: 'string1', info: { stringTwo:'String Two', stringThree: 'String Three' }, size:3445 }, { string: 'string2', info: 'ruby files' }, { string: 'string3', info: '' }, { string: 'string4 without info key', } ]; items.forEach((data) => { if(typeof data.info !== "undefined" && data.info.constructor === Object) { console.log(data.info.stringThree); } })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.