将特定对象(根据给定条件)从对象数组复制到angularJS中的另一个数组中

时间:2014-10-31 13:39:06

标签: javascript angularjs angularjs-ng-repeat controllers

我想从现有的对象数组创建一个新的对象数组,这样新数组只有那些与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

1 个答案:

答案 0 :(得分:1)

您可以使用Array.filter执行此操作:

$scope.temp = $scope.orders.filter(function(o){return o.key === 'completed'});