2016-12-19 8 views
0

JSON配列をフィルタリングしようとしています。私の例ではJSON配列の値がjson with angularjs

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

どのように私は最後の名前でフィルタリングすることができます(たとえば「ジョー」)で始まっていますか?私は疲れてこの:

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でそれを呼び出します/ filter – 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

更新されました。これがうまくいくか試してみてください。 –