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

Copying specific objects(according to given condition) from array of objects into an another array in angularJS

本文关键字:对象 数组 复制 另一个 angularJS 条件      更新时间:2023-09-26

我想从现有的对象数组中创建一个新的对象数组,这样新数组将只有那些与if语句中定义的条件匹配的对象。下面是我正在尝试的代码片段

要求是当key.status=='completed'条件被命中时,只有订单数组中状态为'completed]的对象才会被复制到临时数组中。但由于使用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--------

您可以使用Array.filter:

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