我想从现有的对象数组创建一个新的对象数组,这样新数组只有那些与if语句中定义的条件匹配的对象。以下是我正在尝试的代码片段
要求是当key.status =='完成时#39;条件被击中,只有具有状态的对象:'已完成'在orders数组中将被复制到临时数组。但由于使用angular.copy,整个副本的副本将被复制到临时数组中。
-------- HTML -----
<body ng-app ="myModule">
<div ng-controller="myController">
<div ng-repeat="order in temp">
{{order.id}} -- {{order.status}} -- {{order.name}}
</div>
</div>
</body>
------- ------ XXXX
------- JS ----------
<script>
var myModule = angular.module('myModule', []);
myModule.controller('myController', function($scope) {
$scope.orders = [
{id: '101' , status : 'completed' , name: 'Jacopo' } ,
{id: '102' , status : 'Rejected' , name: 'Dan' } ,
{id: '103' , status : 'created' , name: 'Erick' }
] ;
$scope.temp = [ ] ;
angular.forEach($scope.orders , function(key,value){
if(key.status == 'completed') {
angular.copy($scope.orders,$scope.temp)
}
} );
} ) ;
</script>
------ -------- XXX
答案 0 :(得分:1)
您可以使用Array.filter执行此操作:
$scope.temp = $scope.orders.filter(function(o){return o.key === 'completed'});