根据日期属性

时间:2016-09-04 14:52:48

标签: javascript angularjs arrays sorting

我有一个对象数组,其中每个对象都有一个date属性。我想将具有相同日期的所有对象移动到一个数组,并生成与不同日期值一样多的数组。什么是迭代数组并对此数组进行排序的最佳方法。使用角度数组函数很好。

1 个答案:

答案 0 :(得分:1)

我会混合使用orderby $ filter和一个简单的数组。 让我们通过一个例子来看待它:

//example values..
var objects = [{exampleProp: undefined, date:new Date(3,1,1970) }, 
              {exampleProp: undefined, date:new Date(2,1,1970)}, 
              {exampleProp: undefined, date:new Date(2,1,1970)}, 
              {exampleProp: undefined, date:new Date(1,1,1970)}];


//ordering your master array by date property..
objects = $filter('orderBy', objects, 'date')($scope);

//grouping by date your master object..
var dictionary = {};
objects.forEach(function(object){
   if(dictionary[object.date] == undefined)
      dictionary[object.date] = [];

    dictionary[object.date].push(object);
});

//transforming your dictionary to an array of array....
var objectsByDate = [];
for(var date in dictionary)
  objectsByDate.push(dictionary[date]);

请参阅$filterorderby文档,了解如何通过对象属性对其进行排序