比较ng repeat中的最后两个记录

时间:2017-03-27 11:25:00

标签: javascript angularjs

以下是记录:

$scope.myArray = 
  [
    {
      "id": 100,
      "child": [
        {
          "id": 77,
          "part": 33,
          "name" : 16
          "subName": 16.1,
        },
        {
          "id": 76,
          "part": 30,
          "name" : 14,
          "subName": 14.3,
        },
       {
        "id": 75,
        "part": 29,
        "name" : 12,
        "subName": 12.1,
       }
      ]
    }
  ]

现在在上面的记录中,16.1属于part = 33而14.3属于part = 30,因此Subname都属于不同的部分,所以我想显示名称16和14.

所以上述记录的预期输出如下所示:

16
14
12

当我有以下记录时出现问题:

$scope.myArray = 
  [
    {
      "id": 100,
      "child": [
        {
          "id": 76,
          "part": 30,
          "name" : 14,
          "subName": 14.3,
        },
        {
          "id": 71,
          "part": 30,
          "name" : 14,
          "subName": 14.2,
        },
        {
          "id": 70,
          "part": 30,
          "name" : 14,
          "subName": 14.1,
        }
      ]
    }
  ]

这里的子包含相同部分的所有子名,即30,所以现在我要显示Subname.So在这种情况下的预期输出将是如下的子名:

14.3
14.2
14.1

记录将从0 - 1,1 - 2,2 - 3进行比较,但是如果子数组包含两个以上的记录,我就不知道如何比较记录。

注意:如果两个记录中的任何一个包含不同的部分,我将不会在子数组中有重复的部分。例如,我不会像16.1,14.3,14.2那样使用Subname,因为这里我有16.1属于不同的部分。但是如果没有16.1,那么我可以得到14.3,14.2,它们是相同的部分。

var app = angular.module('myApp', []);
        app.controller('myCtrl', function ($scope) {
          $scope.myArray = 
  [
    {
      "id": 100,
      "child": [
        {
          "id": 77,
          "part": 33,
          "name" : 16,
          "subName": 16.1,
        },
        {
          "id": 76,
          "part": 30,
          "name" : 14,
          "subName": 14.3,
        },
        {
          "id": 75,
          "part": 29,
          "name" : 12,
          "subName": 12.1,
        }
      ]
    }
  ]
        });
<!DOCTYPE html>
<html ng-app="myApp" ng-controller="myCtrl">
<head>
    <title></title>
    <meta charset="utf-8" />
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
</head>
<body>
    <div ng-repeat="item in myArray[0].child">
       {{ item.name }} 
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

请参阅以下控制器代码。我试图实现你想要的东西。

$scope.myArray = [ {
        "id" : 100,
        "child" : [ {
            "id" : 76,
            "part" : 30,
            "name" : 14,
            "subName" : 14.3,
        }, {
            "id" : 71,
            "part" : 30,
            "name" : 14,
            "subName" : 14.2,
        }, {
            "id" : 70,
            "part" : 30,
            "name" : 14,
            "subName" : 14.1,
        } ]
    }, {
        "id" : 101,
        "child" : [ {
            "id" : 77,
            "part" : 33,
            "name" : 16,
            "subName" : 16.1,
        }, {
            "id" : 76,
            "part" : 30,
            "name" : 14,
            "subName" : 14.3,
        }, {
            "id" : 75,
            "part" : 29,
            "name" : 12,
            "subName" : 12.1,
        } ]
    } ]

HTML code:

<div ng-repeat="item in myArray">
            ============<br />
            <div ng-repeat="item1 in item.child">
                <span>{{(item1.part==item.child[$index+1].part ||
                    ($index==item.child.length-1 &&
                    item1.part==item.child[$index-1].part))?item1.subName:item1.name}}</span>
            </div>
        </div>

我在检查,如果当前项目和下一项目的部分相同或不同,如果它是最后一项,那么当前项目和前一项目的部分是否相同,并且基于此我正在显示subNamename。我希望这个解决方案对你有用。

更新:

&#13;
&#13;
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.myArray = [{
            "id": 100,
            "child": [{
                "id": 76,
                "part": 30,
                "name": 14,
                "subName": 14.3,
            }, {
                "id": 71,
                "part": 30,
                "name": 14,
                "subName": 14.2,
            }, {
                "id": 70,
                "part": 30,
                "name": 14,
                "subName": 14.1,
            }]
        }, {
            "id": 101,
            "child": [{
                "id": 77,
                "part": 33,
                "name": 16,
                "subName": 16.1,
            }, {
                "id": 76,
                "part": 30,
                "name": 14,
                "subName": 14.3,
            }, {
                "id": 75,
                "part": 29,
                "name": 12,
                "subName": 12.1,
            }]
        }]
    });
&#13;
<html ng-app="myApp" ng-controller="myCtrl">
   <head>
      <title></title>
      <meta charset="utf-8" />
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
   </head>
   <body>
      <div ng-repeat="item in myArray">
         ============<br />
         <div ng-repeat="item1 in item.child">
            <span>{{(item1.part==item.child[$index+1].part ||
            ($index==item.child.length-1 &&
            item1.part==item.child[$index-1].part))?item1.subName:item1.name}}</span>
         </div>
      </div>
   </body>
</html>
&#13;
&#13;
&#13;