Сортировать объект javascript на основе свойства даты

0

У меня есть массив объектов, в которых каждый объект имеет свойство date. Я хочу переместить все объекты, имеющие одну и ту же дату, в массив и сделать столько массивов, сколько разных значений даты. Каким будет лучший способ перебора массива и сортировки этого массива. Использование функций углового массива в порядке.

Теги:
arrays
sorting

1 ответ

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]);

см. документацию $ filter и orderby, чтобы узнать, как вы можете заказать его с помощью свойства объекта

  • 0
    Просто любопытно, есть ли здесь разница в использовании == вместо === для if(dictionary[object.date) == undefined ? Мне честно любопытно, потому что я склонен использовать === .
  • 1
    Во влажных случаях они просто равны. == немного медленнее, чем ===, потому что преобразование типов не требуется. Для очень хорошего всестороннего обзора, см. Этот пост stackoverflow.com/a/359509/1306679
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню