我得到的名单长度根据员工人数的不同而不同。
$http({
url: '/SharedData/ClockInList',
method: "POST",
params: {Date: currentday}
}).success(function (data) {
})
我需要一种成功的方法将我的JSON分成两个偶数长度列表。我在想的是一种计算结果数量的方法,然后说从0到$ scope.A和剩余的$ scope.B中的数字。
答案 0 :(得分:0)
您可以使用Array.filter对列表进行分区:
$scope.lotsOfData = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
$scope.listA = $scope.lotsOfData.filter( function(value,index){
return index % 2 == 0;
});
$scope.listB = $scope.lotsOfData.filter( function(value,index){
return index % 2 == 1;
});
$scope.listC = $scope.lotsOfData.slice(0, $scope.lotsOfData.length / 2 + 1);
$scope.listD = $scope.lotsOfData.slice($scope.lotsOfData.length / 2 + 1);
angular.module('MyModule', [])
.controller('MyController', function( $scope ) {
$scope.lotsOfData = [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ];
$scope.listA = $scope.lotsOfData.filter( function(value,index){
return index % 2 == 0;
});
$scope.listB = $scope.lotsOfData.filter( function(value,index){
return index % 2 == 1;
});
$scope.listC = $scope.lotsOfData.slice(0, $scope.lotsOfData.length / 2 + 1);
$scope.listD = $scope.lotsOfData.slice($scope.lotsOfData.length / 2 + 1);
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='MyModule' ng-controller='MyController'>
<p>{{listA || json}}</p>
<p>{{listB || json}}</p>
<p>{{listC || json}}</p>
<p>{{listD || json}}</p>
</div>
&#13;
答案 1 :(得分:0)
您可以使用Underscore.JS使用groupBy拆分数据。 groupBy返回对象,如果要转换为数组,请使用_.toArray()
var data = ["1", "7", "8", "9", "11", "12"];
var splitData = _.groupBy(data, function(element, index){
return Math.floor(index/2);
});
splitData = _.toArray(splitData);
答案 2 :(得分:0)
这接近我所需要的但是在ListA中我需要1,2,3,4,5而ListB将是6,7,8,9
你有几个选项,用于循环或使用过滤器/其他库进行分组,但你需要做的是获取项目的数量,然后使用你的项目的索引&lt;将/ 2计入一个组,将> = count / 2计入第二组。
https://docs.angularjs.org/api/ng/function/angular.forEach
$http({
url: '/SharedData/ClockInList',
method: "POST",
params: {Date: currentday}
}).success(function (data) {
group1 = []; // these need to be declared on scope or controller or somewhere
group2 = [];
var count = data.length;
angular.forEach(data, function(item, key) {
if (key <= count / 2) {
group1.push(item);
} else {
group2.push(item);
}
}
})