Javascript 获取嵌套对象的长度

Javascript 获取嵌套对象的长度,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我的目标如下: const object = { user1: { "article1": {} }, user2: { "article2": {}, "article3": {}, "article4": {} }, user3: { "article5": {} }, user4: { "article6": {} } }; 我可以使用下面的方法计算用户文章 const user1count = (objec

我的目标如下:

const object = {
  user1: {
    "article1": {}
  },
  user2: {
    "article2": {},
    "article3": {},
    "article4": {}
  },
  user3: {
    "article5": {}
  },
  user4: {
    "article6": {}
  }
};
我可以使用下面的方法计算用户文章

const user1count = (object && object.user1 && Object.keys(object.user1).length) || 0
const user2count = (object && object.user2 && Object.keys(object.user2).length) || 0
const user3count = (object && object.user3 && Object.keys(object.user3).length) || 0
const user4count = (object && object.user4 && Object.keys(object.user4).length) || 0
有没有人能推荐一种更为理想的方法?我更喜欢下面这样的东西

const counts = {
  user1: 1,
  user2: 3,
  user3: 1,
  user4: 1
};

提前感谢。

您不需要像这样检查
对象和&object.user1
。只需在外部对象关键点上循环,然后找到长度。使用reduce创建最终对象

const输入={
用户1:{
“第1条”:{}
},
用户2:{
“第2条”:{},
“第3条”:{},
“第4条”:{}
},
用户3:{
“第5条”:{}
},
用户4:{
“第6条”:{}
}
};
常量输出=对象。键(输入)。减少((上一个,键)=>{
prev[key]=Object.key(输入[key])长度;
返回上一个;
}, {});
控制台日志(输出)您可以使用和方法来获得所需的输出:

const对象={
用户1:{
“第1条”:{}
},
用户2:{
“第2条”:{},
“第3条”:{},
“第4条”:{}
},
用户3:{
“第5条”:{}
},
用户4:{
“第6条”:{}
}
};
常量计数=对象。条目(对象)
.reduce((r[k,o])=>(r[k]=Object.keys(o).length,r),{});
控制台日志(计数)

。作为控制台包装{max height:100%!important;top:0;}
您可以
映射对象的。创建一个具有相同键的条目数组,该值设置键的长度。用于将条目转换为对象

const对象={
用户1:{
“第1条”:{}
},
用户2:{
“第2条”:{},
“第3条”:{},
“第4条”:{}
},
用户3:{
“第5条”:{}
},
用户4:{
“第6条”:{}
}
};
const entries=Object.entries(Object.map)([k,v])=>[k,Object.keys(v.length]),
输出=Object.fromEntries(条目);
console.log(输出)
您可以与一起使用。首先,可以将entires设置为对象(键为用户并计算该用户对象中的键数),然后将映射数组中的每个对象指定给单个对象:

const object={user1:{“article1”:{},user2:{“article2”:{},article3:{},article4:{},user3:{“article5”:{},user4:{“article6”:{};
const res=Object.assign(
{}, 
…Object.entries(Object.map)([key,obj])=>({[key]:Object.key(obj.length}))
);

控制台日志(res)您可以使用forEach循环

const对象={
用户1:{
“第1条”:{}
},
用户2:{
“第2条”:{},
“第3条”:{},
“第4条”:{}
},
用户3:{
“第5条”:{}
},
用户4:{
“第6条”:{}
}
};
Object.keys(Object.forEach)(o=>{
console.log(o,Object.keys(Object[o]))
if(对象的类型[o]=“对象”){
console.log(Object.keys(Object[o]).length);
}
})
const counts = Object.entries(object)
    .reduce((acc, entry) => ({
        ...acc,
        [entry[0]]: Object.keys(entry[1] || {}).length
    }));