【发布时间】:2016-12-23 06:29:36
【问题描述】:
大家好,我有一个对象数组(其中 20 个),我以这种格式放置这些对象以在 Angular 项目中创建列(注意对象中有对象)。我想按具有最多键的对象(在数组中的每个对象内)对它们进行排序,到在数组中的对象内具有最少数字键的对象),以便当它们以列显示时最有意义。
我正在改变一个导航栏变量以用于可点击的高级搜索。感谢您的帮助,因为这是我作为新开发人员的第一个大项目。
var clickableFilters = [
{"State": {
"0": [{value: "liquid"}, {count: 30}]
}
},
{"Country": {
"0": [{value: "USA"}, {count: 50}]
"1": [{value: "Nigeria"}, {count: 90}]
}
},
{"Color": {
"0": [{value: "blue"}, {count: 30}]
"1": [{value: "purple"}, {count: 50}]
"2": [{value: "green"}, {count: 100}]
}
}
]
如何按键的数量(内部对象中的键)对对象进行排序,以便最终(在 JavaScript 中)
[{"Color": {}}, {"Country": {}}, {"State": {}}]
【问题讨论】:
-
“这个问题没有显示任何研究成果”
-
@naomik 这是一个让问题更清楚的例子,他们的名字并不重要。
-
@SpencerWieczorek 是的。仅仅抓住任何对象的第一个属性,不管它可能是糟糕的设计。在某些时候,可能其他一些程序会读取这些对象并需要访问嵌套对象;它应该能够以理智的方式这样做。这是
{key: 'x', value: 1}和{x:1}之间的区别——前者比后者好得多。 -
@chrissavage “什么是更合适的密钥名称?” - 只有您可以告诉我们实际密钥是什么。如果是我,如果嵌套对象没有任何用途,我根本不会使用它。如果您需要将一些其他数据与子对象一起附加,那么像
{key: 'somekey', data: childObjectHere}这样的排序总是可以通过 已知键data访问可排序属性,而不仅仅是抓取输入对象的第一个键。 -
@chrissavage 如果您对此有控制权,我认为
let filters = [ ..., {filter: 'Country', options: [{value: 'blue', count: 30}, {value: 'purple', count: 50}, ...]}]是一个更好的数据形状。
标签: javascript arrays sorting object