2015-03-14 3 views
2

У меня есть следующие данные внутри моего script.js:Манипуляции объектов в angularjs/JavaScript

$scope.reports = [{ departuredate: "2015-2-27", routeline: "PASAY - CAGAYAN", seatingtypescode: "ABS", tickettripcode: "3", tripcodetime: "16:30:00" }, { departuredate: "2015-2-27", routeline: "PASAY - CAGAYAN", seatingtypescode: "ABS", tickettripcode: "3", tripcodetime: "16:30:00" },{ departuredate: "2015-2-27", routeline: "PASAY - CAGAYAN", seatingtypescode: "ABS", tickettripcode: "3", tripcodetime: "16:30:00" },{ departuredate: "2015-3-1", routeline: "Cavite-Laguna", seatingtypescode: "ABS", tickettripcode: "4", tripcodetime: "16:30:00" }, { departuredate: "2015-3-1", routeline: "Cavite-Laguna", seatingtypescode: "ABS", tickettripcode: "4", tripcodetime: "16:30:00" },{ departuredate: "2015-3-2", routeline: "Earth-Heaven", seatingtypescode: "ABS", tickettripcode: "5", tripcodetime: "16:30:00" }];

Я хочу, чтобы достичь выхода, который выглядит следующим образом:

{ 3:{ 2015-2-27: 3, 2015-2-28: 0, 2015-3-1: 0, 2015-3-2: 0, 2015-3-3: 0, routeline: "PASAY - CAGAYAN" }, 4:{ 2015-2-27: 0, 2015-2-28: 0, 2015-3-1: 1, 2015-3-2: 0, 2015-3-3: 0, routeline: "Cavite-Laguna" } 5:{ 2015-2-27: 0, 2015-2-28: 0, 2015-3-1: 0, 2015-3-2: 1, 2015-3-3: 0, routeline: "Earth-Heaven" } }

3, 4, 5 означает tickettripcode по адресу $scope.reports. Даты - это диапазон даты, введенный пользователем. Я хочу сделать это, чтобы подсчитать количество отправленных в определенном билетном билете.

Например, в tickettripcode:3 есть 3 те же даты (2015-2-27) .В tickettripcode:4 есть 2 одинаковые даты (2013-3-1) .В tickettripcode:4 есть только одна дата (2013-3-2). Если в данную дату нет отправителя, значение должно вернуть 0, как вы можете видеть выше.

Я сделал код, но получаю неправильный вывод, потому что он печатает все 0. Так же, как это:

{ 3:{ 2015-2-27: 0, 2015-2-28: 0, 2015-3-1: 0, 2015-3-2: 0, 2015-3-3: 0, routeline: "PASAY - CAGAYAN" }, }

Что неправильно я сделал. Любая помощь? Огромное спасибо.

Мой plunker ссылка: http://plnkr.co/edit/excSfosrSHUFqF5vDFEO?p=preview

ответ

1

Попробуйте

var details = {}; 

    angular.forEach($scope.reports, function (report) { 
    if (!details[report.tickettripcode]) { 
     details[report.tickettripcode] = {}; 
     details[report.tickettripcode].routeline = report.routeline; 
    } 

    angular.forEach(pushDatesInside, function (el) { 
     if (typeof details[report.tickettripcode][el.date] === 'undefined') { 
     details[report.tickettripcode][el.date] = 0; 
     } 
    }); 

    details[report.tickettripcode][report.departuredate] += 1; 
    }); 

Example

+0

Большое спасибо Александру. – QWERTY

Смежные вопросы