var app = angular.module('angApp', ['angular.filter']);
app.controller('Cntrl1', Cntrl1);
Cntrl1.$inject = ['$scope', '$filter'];
function Cntrl1($scope, $filter) {
var vm = this;
var data = {
"Headers": [{ "TypeId": 1, "TypeName": "A", "OrderNo": 1},{ "TypeId": 2, "TypeName": "V", "OrderNo": 2},{ "TypeId": 3, "TypeName": "C", "OrderNo": 3},{ "TypeId": 4, "TypeName": "N", "OrderNo": 4},{ "TypeId": 5, "TypeName": "O", "OrderNo": 5} ],
"Rows": [{"Activities": [{"TypeId": 1,"Data": 90},{"TypeId": 3,"Data": 10},{"TypeId": 1,"Data": 1275},{"TypeId": 4,"Data": 5},{"TypeId": 5,"Data": 0} ], "Id": 165, "Name": "A"},{ "Activities": [{"TypeId": 3,"Data": 30},{"TypeId": 1,"Data": 1045},{"TypeId": 2,"Data": 70},{"TypeId": 4,"Data": 0},{"TypeId": 5,"Data": 0} ], "Id": 325, "Name": "B"},{ "Activities": [{"TypeId": 3,"Data": 5},{"TypeId": 1,"Data": 640},{"TypeId": 2,"Data": 5},{"TypeId": 4,"Data": 0},{"TypeId": 5,"Data": 0} ], "Id": 7, "Name": "B"},{ "Activities": [{"TypeId": 3,"Data": 80},{"TypeId": 1,"Data": 3045},{"TypeId": 4,"Data": 5},{"TypeId": 2,"Data": 260},{"TypeId": 5,"Data": 0} ], "Id": 102, "Name": "C"},{ "Activities": [{"TypeId": 3,"Data": 5},{"TypeId": 1,"Data": 845},{"TypeId": 4,"Data": 5},{"TypeId": 5,"Data": 85},{"TypeId": 2,"Data": 45} ], "Id": 28, "Name": "D"},{ "Activities": [{"TypeId": 2,"Data": 55},{"TypeId": 3,"Data": 20},{"TypeId": 1,"Data": 2175},{"TypeId": 4,"Data": 0},{"TypeId": 5,"Data": 0} ], "Id": 103, "Name": "El"},{ "Activities": [{"TypeId": 1,"Data": 1330},{"TypeId": 2,"Data": 40},{"TypeId": 3,"Data": 10},{"TypeId": 4,"Data": 0},{"TypeId": 5,"Data": 0} ], "Id": 93, "Name": "Ca"} ]
};
vm.Headers = data.Headers;
vm.Rows = data.Rows;
vm.Sort = function (sortBy) {
vm.SortDir = vm.SortDir == 'desc' ? 'asc' : 'desc';
if (sortBy == 'Name') {
vm.Rows = $filter('orderBy')(vm.Rows, sortBy, vm.SortDir == 'desc');
} else {
vm.Rows = $filter('orderBy')(vm.Rows, sortBy, vm.SortDir == 'desc');
}
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="angApp" ng-controller="Cntrl1 as vm">
<table id="table" class="table table-bordered table-hover table-striped">
<thead>
<tr class="bg-light-gray text-uppercase">
<th>#</th>
<th class="w-50"> <a href="javascript:void(0)" ng-click="vm.Sort('Name')">Name</a></th>
<th ng-repeat="item in vm.Headers" class="text-right">
<a href="javascript:void(0)" ng-click="vm.Sort('Activities.Data')">{{item.TypeName}}</a>
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="b in vm.Rows">
<td>{{$index+1}}</td>
<td>{{b.Name}}</td>
<td ng-repeat="item in b.Activities" >{{item.Data}}</td>
</tr>
</tbody>
</table>
</div>
question from:
https://stackoverflow.com/questions/65623028/how-to-sort-multidimensional-array-level-1-according-to-level-2-value-in-angular