基于第二阵列的长度对阵列进行ng-repeat

时间:2016-06-21 09:39:55

标签: javascript arrays angularjs html5

我正在尝试使用ng-repeat迭代数组以在列表中显示。要显示的记录数应等于第二个数组的长度。

 <ul>
  <li ng-repeat="item in firstArray"></li>
 </ul>

 var firstArray = ["a","b","c","d","e","f"]
 var secondArray = ["x","y","z"]

上述示例的预期结果:

 var output = ["a","b","c"]

由于secondArray的长度为3,因此来自firstArray的前三个值的li元素数将为3。

我应该使用过滤器吗?我正在使用angularjs。

由于

5 个答案:

答案 0 :(得分:5)

最简单的解决方案是使用limitTo

<ul>
  <li ng-repeat="item in firstArray | limitTo:secondArray.length">{{item}}</li>
</ul>

http://plnkr.co/edit/LWh1uqNPxTy09u3MP677?p=preview

答案 1 :(得分:1)

<ul>
  <li ng-repeat="item in firstArray" ng-if=" $index < secondArray.length "></li>
</ul>

使用上面的代码,它将起作用

答案 2 :(得分:1)

您可以在ng-repeat中使用AngularJs过滤器limitTo。请参阅以下示例:

在有角度的应用方面:

>>> processed = ((k, list(l)) for k, l in groupby(text, str.isspace))
>>> result = [(len(l), " ") if k else (len(l), "".join(l)) for k, l in processed]
>>> result
[(2, 'Am'), (20, ' '), (1, 'G'), (10, ' '), (1, 'C')]

在您看来:

db.Products.Where(p => p.Name == "product").Skip(10).Take(10).ToList();

答案 3 :(得分:0)

也许您应该使用$ index来测试是否必须显示它:

<ul >
     <li ng-repeat="item in firstArray" ng-if="$index < secondArray.length()" > </li>
 </ul>

答案 4 :(得分:0)

只需遍历第二个数组,然后使用firstArray[$index]访问第一个数组的项目。

&#13;
&#13;
angular.module('myApp', [])
.controller('myCtrl', function ($scope) {
	$scope.firstArray = ["a","b","c","d","e","f"];
    $scope.secondArray = ["x","y","z"];
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
    <div ng-controller="myCtrl">
        <ul>
            <li ng-repeat="i in secondArray">
                {{firstArray[$index]}}
            </li>
        </ul>
    </div>
</div>
&#13;
&#13;
&#13;