2016-12-19 136 views
0

我想過濾一個JSON數組。在我的例子中,JSON數組的值是過濾JSON與angularjs

vm.users = [{ "fname": "Antoan", "lname": "Jonson", "Address": "Address1" }, ... ] 

如何以姓氏開頭(例如'Jo')?我厭倦了這樣:

angular.module('MyApp', ['ngMaterial', 'ngMessages', ]) 
.controller('AdminController', function ($scope, $http, $filter, $location, $sce) { 
MyApp.filter('myFilter', function() { 

    return function (input, term) { 
     var output = []; 
     angular.forEach(input, function (value, index) { 
      if (value.lname.startsWith(term)) { 
       output.push(value); 
      } 
     }); 
     return output; 
    } 
}); 
}); 
+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array叫它/過濾器 – str

回答

1

使用自定義過濾器

myApp.filter('myFilter', function() { 

return function(input, term) { 
    var output=[]; 
    angular.forEach(input,function(value,index){ 
     if(value.lname.startsWith(term)){ 
      output.push(value); 
     } 
    }); 
    return output; 
} 
}); 

然後用

var filtered = $filter('myFilter')(JSON.parse(vm.users), term); 
+0

謝謝。你的代碼給我錯誤。我是否需要將頂部聲明爲函數。 – user6934713

+0

應用程序將是您的應用程序名稱,您需要聲明它 –

+0

我更改了上面的代碼。你能證實我是否正確嗎?返回部分仍然出現錯誤。 – user6934713

-1

試試這個,

vm.users.filter(function (user) { 
    return user.lname.includes(term); 
}); 

希望這有助於。

+0

已更新。嘗試這應該工作。 –