这是一个如何filter
在 AngularJS JavaScript 中使用的示例(而不是在 HTML 元素中)。
在此示例中,我们有一组 Country 记录,每个记录包含一个名称和一个 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。
希望这可以帮助。