2017-07-18 164 views
0
$scope.searchPo = function (id) { 
     var match = $filter('filter')($scope.array, {po: id}); 
     return match; 
}); 

$scope.array = 
[[{"po":1},{"po":2},{"po":3}], 
[{"po":11},{"po":12},{"po":13}], 
[{"po":21},{"po":22},{"po":23}]] 

我想要的結果[{ 「PO」:1},{ 「PO」:11},{ 「PO」:12},{ 「PO」:13} ,{「po」:21}] 當我調用$ scope.searchPo(1);

三江源非常

+0

您需要自定義過濾器對於這一點,或者你可能只是沒有爲此使用過濾器在所有 - 純JS或lodash或什麼的。 –

+0

你想要搜索$ scope.pos或$ scope.array嗎? –

+0

@DanielWarke $ scope.array – hksfho

回答

0

angular.module('app', []) 
 
.controller('ctrl', ['$scope', '$filter', function($scope, $filter) { 
 
    $scope.array = [ 
 
     [{"po":1},{"po":2},{"po":3}], 
 
     [{"po":11},{"po":12},{"po":13}], 
 
     [{"po":21},{"po":22},{"po":23}] 
 
    ]; 
 

 
    $scope.searchPo = function(id){ 
 
     return $scope.array.reduce(function(a,b){ 
 
     return a.concat($filter('filter')(b, {po: id})); 
 
     }, []); 
 
    }   
 
    
 
}])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<ul ng-app='app' ng-controller='ctrl'> 
 
    <li ng-repeat='item in searchPo(1)'>{{item}}</li> 
 
</ul>

0

你也可以寫自己的功能,採用_.filter。這裏是做的一個方式

var searchPo = function (arr, id) { 
    var newarr = [] 
    var reg = new RegExp(id) 
    _.filter(arr, function(value) { 
    _.filter(value, function(val) { 
     _.each(val, function(v) { 
       //console.log(reg.test(v)); 
      if(reg.test(v)) { 
        newarr.push(val); 
      } 
     }); 

    }); 
    }); 

    console.log(newarr); 
}; 

VAR一個= [[{ 「PO」:1},{ 「PO」:2},{ 「PO」:3}],[{ 「PO」: 11},{「po」:12},{「po」:13}], [{「po」:21},{「po」:22},{「po」:23}]]

searchPo(一,1)