[英]Sort object by one of its values
我正在嘗試按值從最小到最大的順序對對象進行排序。 例如:
{
obj1: {
key1: something,
key2: 54,
key3: "something else"
},
obj2:{
key1: something,
key2: 27,
key3: "another thing"
},
obj3:{
key1: anotherSomething,
key2: 78,
key3: "whatever"
}
}
當按key2
排序時,應以obj2
, obj1
, obj3
。 有什么辦法可以做到嗎?
PS我已經看到在Stack Overflow上有一些與此類似的線程,但是它們是通過未嵌套的對象(即{ obj1: 5, obj2: 3, obj3: 8}
對它進行排序的
如果您不能將對象更改為數組(如您在其中的一條評論中所告知),則可以引入一個數組,該數組包含對要排序的對象的引用,然后使用該數組訪問這些對象:
var obj = {
obj1: {
key1: something,
key2: 54,
key3: "something else"
},
obj2:{
key1: something,
key2: 27,
key3: "another thing"
},
obj3:{
key1: anotherSomething,
key2: 78,
key3: "whatever"
}
};
var arr = [ obj.obj1, obj.obj2, obj.obj3 ];
arr.sort( function( a, b ){
return a.key2 - b.key2;
} );
首先,您需要將對象轉換為數組。 這是必須的,因為對象字段不是按自然順序排列的。 這是一個這樣的數組的例子:
var arr =
[
{
key1: something,
key2: 54,
key3: "something else"
},
{
key1: something,
key2: 27,
key3: "another thing"
},
{
key1: anotherSomething,
key2: 78,
key3: "whatever"
}
];
當擁有數組時,可以用不同的方式對它的元素進行排序。 例如,如果您使用Underscore.js,則可以執行以下操作:
_.sortBy(arr, 'key2');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.