2015-05-20 72 views
0

我想使用javascript/Angular.js以相反順序顯示以下結果。這是一個關聯數組,其中鍵爲Year(數值),值爲那些年的月份數組。OrderBy in Angular.js for(key,value)object based on keys

var obj = { '1991': [{'year':1991,'month':'Jan'},{'year':1991,'month':'Feb'}], 
     '1992': [{'year':1992,'month':'March'},{'year':1992,'month':'Dec'}], 
     '2000': [{'year':2000,'month':'Jan'}] 
    } 

所以,當這基本上表明使用ng-repeat="(key,value) in obj" HTML數據,這表明1991年第一和2000的最後一次。我只是想顛倒我的顯示順序,顯示2000作爲第一個和1991作爲最後一個,使用前端的極簡複雜性即O(n)。申請orderBy沒有幫助我。我不確定是否需要爲此定製過濾器。任何線索將不勝感激,因爲我不想改變JSON結構。它應該是一樣的。

歡呼聲。

+2

可以不基於密鑰的 –

+2

對象屬性進行排序將對象轉換到對象的數組然後排序它 –

+0

如果我必須如何?絕對沒有解決方案嗎? –

回答

2

獲取對象鍵,然後使用鍵從對象中獲取值。

HTML

<div ng-repeat="key in keys"> 
    {{obj[key]}} 
</div> 

CONTROLLER

$scope.obj = { 
    '1991': [{ 
    'year': 1991, 
    'month': 'Jan' 
    }, { 
    'year': 1991, 
    'month': 'Feb' 
    }], 
    '1992': [{ 
    'year': 1992, 
    'month': 'March' 
    }, { 
    'year': 1992, 
    'month': 'Dec' 
    }], 
    '2000': [{ 
    'year': 2000, 
    'month': 'Jan' 
    }] 
}; 

// get object keys and sort them. 
$scope.keys = Object.keys($scope.obj).reverse(); 

JSFIDDLE

+0

如何讓它變得更簡單?沒有第二個obj? – fdrv

相關問題