AngularJS - 将JSON拆分为两个偶数组

时间:2014-11-05 20:02:35

标签: json angularjs

我得到的名单长度根据员工人数的不同而不同。

 $http({
        url: '/SharedData/ClockInList',
        method: "POST",
        params: {Date: currentday}
    }).success(function (data) {

    })

我需要一种成功的方法将我的JSON分成两个偶数长度列表。我在想的是一种计算结果数量的方法,然后说从0到$ scope.A和剩余的$ scope.B中的数字。

3 个答案:

答案 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;
});

Array.slice

$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;
&#13;
&#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);
        }
    }
})