Javascript:如何获取对象的长度,但不针对特定属性?

Javascript:如何获取对象的长度,但不针对特定属性?,javascript,object,Javascript,Object,如何获得具有“椅子”属性的家具儿童计数 有没有像房子、家具、长度(椅子)这样的方法? 或者我需要使用.filter来过滤我想要的,然后将.length应用于过滤后的数组吗 Object: house =[ furniture: [{ chair: {name: 'Sun'}, chair: {name: 'vii'}, table: {name: 'bing'}, }] ] 正如@boovad所说,

如何获得具有“椅子”属性的家具儿童计数 有没有像房子、家具、长度(椅子)这样的方法? 或者我需要使用.filter来过滤我想要的,然后将.length应用于过滤后的数组吗

Object:
    house =[
     furniture: [{
          chair: {name: 'Sun'},
          chair: {name: 'vii'},
          table: {name: 'bing'},
     }]
    ]

正如@boovad所说,一个对象不能有两个同名属性。此外,数组不能有非数字键。因此,您需要重新构造对象

我建议这样做:

var house = {
    furniture: {
        chairs: [{
            name: 'Sun'
        }, {
            name: 'Vii'
        }],
        tables: [{
            name: 'Bing'
        }],
    },
};
然后查找每种类型家具的数量:

house.furniture.chairs.length;  // 2
house.furniture.tables.length;  // 1

一个对象不能包含两个同名的键。唯一存在的“椅子”是一把名为“vii”的椅子。你也回答了你自己的问题:过滤,然后是长度。这会给我椅子的长度,但我想知道家具里面有两把椅子array@fubar提到您需要重新组织对象。一张桌子有多把椅子,但这些椅子需要排列成一个阵列。所以你可以这样做{家具:{'Bing':['sun','vii']}。如果椅子/家具/桌子的属性多于它们的名称,那么最终将创建对象数组。但是,如果代码的目的是根据桌子大小分配椅子,则需要使用如上所述的结构-保持椅子和桌子分开。@ChrisTarasovs,这确实让您知道家具阵列中有两张椅子。如果这不符合您的要求,请更新您的问题并提供更多信息。