Javascript:如何获取对象的长度,但不针对特定属性?
如何获得具有“椅子”属性的家具儿童计数 有没有像房子、家具、长度(椅子)这样的方法? 或者我需要使用.filter来过滤我想要的,然后将.length应用于过滤后的数组吗Javascript:如何获取对象的长度,但不针对特定属性?,javascript,object,Javascript,Object,如何获得具有“椅子”属性的家具儿童计数 有没有像房子、家具、长度(椅子)这样的方法? 或者我需要使用.filter来过滤我想要的,然后将.length应用于过滤后的数组吗 Object: house =[ furniture: [{ chair: {name: 'Sun'}, chair: {name: 'vii'}, table: {name: 'bing'}, }] ] 正如@boovad所说,
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,这确实让您知道家具阵列中有两张椅子。如果这不符合您的要求,请更新您的问题并提供更多信息。