Javascript 如何在嵌套数组中输出键值对中的键
在item数组中,有一个名为“folder”的数组,在数组中有“info”的数组。我如何才能只打印键而不打印info数组中的值? 如打印输出“已创建”和“已修改”Javascript 如何在嵌套数组中输出键值对中的键,javascript,arrays,key,key-value,Javascript,Arrays,Key,Key Value,在item数组中,有一个名为“folder”的数组,在数组中有“info”的数组。我如何才能只打印键而不打印info数组中的值? 如打印输出“已创建”和“已修改” let项=[ { itemName:'文件夹', 信息: { 创建日期:“2013年8月13日”, 修改:“2017年12月6日” } }, { itemName:'新文件夹', 信息:“ruby文件” }, { itemName:'文档', 信息:“” } ]您可以通过循环数组打印对象键,并使用object.keys()打印键使用
let项=[
{
itemName:'文件夹',
信息:
{
创建日期:“2013年8月13日”,
修改:“2017年12月6日”
}
},
{
itemName:'新文件夹',
信息:“ruby文件”
},
{
itemName:'文档',
信息:“”
}
]
您可以通过循环数组打印对象键,并使用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项=[
{
itemName:'文件夹',
信息:
{
创建日期:“2013年8月13日”,
修改:“2017年12月6日”
}
},
{
itemName:'新文件夹',
信息:“ruby文件”
},
{
itemName:'文档',
信息:“”
}
];
var console=window.console;
功能显示obj(obj){
if(阵列的obj实例){
对于(变量i=0;i
好吧,它不是无限递归的,但它是有效的(我将尝试改进它)
let项目=[
{
itemName:'文件夹',
信息:
{
创建日期:“2013年8月13日”,
修改:“2017年12月6日”
}
},
{
itemName:'新文件夹',
信息:“ruby文件”
},
{
itemName:'文档',
信息:“”
}
];
让键=[];
项目。forEach((el,索引)=>{
Object.keys(el).forEach(key=>{
如果(!键[索引])
键[索引]=[];
如果(el[键]的类型=='对象'){
Keys[index].push(Object.Keys(el[key]);
}
否则{
键[索引]。按(键);
}
})
});
尝试像这样迭代(让输入项[0].info)