Javascript 计算嵌套对象中的值数

Javascript 计算嵌套对象中的值数,javascript,Javascript,我有一个来自Firebase的对象,看起来像这样: { "-M7OfUx9uE9Ly84iK1rF":{ "dietRestrictions":"Vegetarian", "name":[ "Josh", "Kaylyn", "Jack" ] }, "-M7OnjC7CVMZiKJWeZyF":{ "dietRestrictions":"", "name":[

我有一个来自Firebase的对象,看起来像这样:

{
   "-M7OfUx9uE9Ly84iK1rF":{
      "dietRestrictions":"Vegetarian",
      "name":[
         "Josh",
         "Kaylyn",
         "Jack"
      ]
   },
   "-M7OnjC7CVMZiKJWeZyF":{
      "dietRestrictions":"",
      "name":[
         "TEST 1",
         "TEST 2"
      ]
   }
}
我想计算对象中名称的总数。键
-M7OnjC7CVMZiKJWeZyF
来自Firebase,是随机的。另外,如果名称为空/未定义,我不想计数。

使用
Object.keys()

    const data = {} // Your object
    let count = 0;
    Object.entries(data).forEach(([key, value]) => {
      if(value.name && value.name.length > 0) {
        count += value.name.filter(Boolean).length;    
      }
    });
让obj={
“-M7OfUx9uE9Ly84iK1rF”:{
“饮食限制”:“素食者”,
“姓名”:[
“乔希”,
“凯琳”,
“杰克”
]
},
“-M7OnjC7CVMZiKJWeZyF”:{
“限制”:“,
“姓名”:[
“测试1”,
“测试2”
]
}
}
让计数=0;
Object.keys(obj.forEach)(el=>{
如果(obj[el].name&&obj[el].name.length)计数+=obj[el].name.length
})
console.log(计数)//5

常数响应={
“-M7OfUx9uE9Ly84iK1rF”:{
“饮食限制”:“素食者”,
“姓名”:[
“乔希”,
“凯琳”,
“杰克”
]
},
“-M7OnjC7CVMZiKJWeZyF”:{
“限制”:“,
“姓名”:[
“测试1”,
“测试2”
]
}
};
常量countNumber=(obj)=>{
让计数=0;
用于(obj中的常量键){
if(Array.isArray(obj[key].name))count+=obj[key].name.length;
}
返回计数;
};
常量输出=计数编号(响应);

console.log(output)//5
您可以在对象上循环并检查每个值是否存在名称,如果存在,只需将长度添加到condendthanks,除非它们是空值
[empty,“Josh”,“Kaylyn”,“Jack”]
count+=value.name.filter(Boolean).length这就是我需要的。好的,你的意思是name的元素可以是空的/未定义的?我在想名称数组可以是空的