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