繁体   English   中英

如何使用构造函数Javascript在嵌套数组中的键值对中输出键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM