![](/img/trans.png)
[英]How to Insert Key Value Pairs inside Nested Arrays in JavaScript
[英]How to output keys in key value pairs in nested arrays JavaScript
在项目数组内部,有一个名为“文件夹”的数组,在数组内部有“信息”,我怎么能只打印键而不打印信息数组中的值? 如打印出来的“创建”和“修改”?
let item = [ { itemName: 'folder', info: { created:'August 13 2013', modified: 'December 06 2017' } }, { itemName: 'new folder', info: 'ruby files' }, { itemName: 'documents', info: '' } ]
您可以通过循环数组来打印对象键,并使用Object.keys()
来打印键
使用forEach
检查每个项目,如果项目的info
属性是一个对象,则打印其键。
item.forEach(data => {
if(data.info.constructor === Object) {
console.log(Object.keys(data.info));
}
})
查看每个属性并使用递归函数更深入:
let item = [
{
itemName: 'folder',
info:
{
created:'August 13 2013',
modified: 'December 06 2017'
}
},
{
itemName: 'new folder',
info: 'ruby files'
},
{
itemName: 'documents',
info: ''
}
];
var console=window.console;
function displayObj(obj) {
if (obj instanceof Array) {
for (var i = 0; i < obj.length; i++) {
console.log('obj['+i+']='+obj[i]);
displayObj(obj[i]);
}
}
if (obj instanceof Object) {
for (var p in obj) {
console.log('obj.'+p+'='+obj[p]);
displayObj(obj[p]);
}
}
}
displayObj(item);
好吧,它不是无限递归的,但是它可以工作(我会尝试改善它)
let items = [
{
itemName: 'folder',
info:
{
created:'August 13 2013',
modified: 'December 06 2017'
}
},
{
itemName: 'new folder',
info: 'ruby files'
},
{
itemName: 'documents',
info: ''
}
];
let Keys = [];
items.forEach((el, index) => {
Object.keys(el).forEach(key => {
if(!Keys[index])
Keys[index] = [];
if(typeof el[key] === 'object'){
Keys[index].push(Object.keys(el[key]));
}
else {
Keys[index].push(key);
}
})
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.