这是一个如何filter
在AngularJS JavaScript中(而不是在HTML元素中)使用的示例。
在此示例中,我们有一个国家/地区记录数组,每个记录包含一个名称和一个3个字符的ISO代码。
我们想要编写一个函数,该函数将在此列表中搜索与特定3字符代码匹配的记录。
这是我们不使用以下方法的方法filter
:
$scope.FindCountryByCode = function (CountryCode) {
// Search through an array of Country records for one containing a particular 3-character country-code.
// Returns either a record, or NULL, if the country couldn't be found.
for (var i = 0; i < $scope.CountryList.length; i++) {
if ($scope.CountryList[i].IsoAlpha3 == CountryCode) {
return $scope.CountryList[i];
};
};
return null;
};
是的,没错。
但是,使用filter
以下命令显示相同的函数:
$scope.FindCountryByCode = function (CountryCode) {
// Search through an array of Country records for one containing a particular 3-character country-code.
// Returns either a record, or NULL, if the country couldn't be found.
var matches = $scope.CountryList.filter(function (el) { return el.IsoAlpha3 == CountryCode; })
// If 'filter' didn't find any matching records, its result will be an array of 0 records.
if (matches.length == 0)
return null;
// Otherwise, it should've found just one matching record
return matches[0];
};
更整洁。
请记住,filter
返回的结果是一个数组(匹配记录的列表),因此在此示例中,我们将要返回1条记录或NULL。
希望这可以帮助。