は、これは、このような簡単な方法はありませんが、私はそのキーtask_date
で辞書を作成します。
私は各オブジェクトが複数のタスクを持つ可能性があると仮定し、問題をより複雑にします。
次のようにだから私のソリューションは、次のようになります。
http://codepen.io/kei-sato/pen/qaLRLZ
JS:
var app = angular.module('myApp', []);
app.controller('myCtrl', ['$scope', function($scope){
var monthTasks = [
{ id: 1, tasks: [{ task_date: '2016-9-13' }, { task_date: '2016-9-14' }] },
{ id: 2, tasks: [{ task_date: '2016-9-12' }] },
{ id: 3, tasks: [{ task_date: '2016-9-11' }, { task_date: '2016-9-14' }] },
{ id: 4, tasks: [{ task_date: '2016-9-10' }] },
];
var monthTasksDict = monthTasks.reduce((dict, monthTask) => {
monthTask.tasks.forEach(task => {
var taskDate = task.task_date;
dict[taskDate] = dict[taskDate] || [];
dict[taskDate].push(monthTask);
});
return dict;
}, {});
var monthTasksWithTaskDate = Object.keys(monthTasksDict).map(taskDate => ({ task_date: taskDate, monthTasks: monthTasksDict[taskDate] }));
$scope.monthTasksWithTaskDate = monthTasksWithTaskDate;
}]);
HTML:
<html lang="en" ng-app="myApp">
<body ng-controller="myCtrl">
<ul ng-repeat="monthTasks in monthTasksWithTaskDate | orderBy: 'task_date'">
task_date: {{ task_date }}
<li ng-repeat="monthTask in monthTasks">
id: {{ monthTask.id }}
</li>
</ul>
<!-- External Libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
</body>
</html>
出典
2016-10-21 07:24:07
Kei
あなたはHTMLßで一緒にそれらを表示しますか – HermanTheGermanHesse