您是否希望您的数组中每个字母只包含一个实例?如果定义包含 [apple,banana,avocado],它不会打印数组中每个字符串的第一个字母:a apple bbanana a avocado。
也不会第一个 firstLetterOfTerm(definitions[$index-1]) 返回 undefined 因为索引 0 - 1 不存在?
代码笔
`
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
<script type="text/javascript">
angular.module('myStatefulFilterApp', [])
.controller('personController', ['$scope', function($scope) {
$scope.definitions = ['apple0', 'banana0','apple1', 'banana1','apple2', 'banana2','apple3', 'banana3']
}])
.filter('startsWith', [function(){
var start = function(array, letter){
console.log(arguments)
var newArray = new Array();
angular.forEach(array, function(x){
if (letter == x.charAt(0)) newArray.push(x)
})
return newArray;
}
return start;
}])
.filter('titleCaseFilter', [ function() {
var titleCaseFilter = function(array) {
var newArray = new Array();
angular.forEach(array, function(string){
if (newArray.indexOf(string.charAt(0)) == -1) newArray.push(string.charAt(0));
});
return newArray;
}
return titleCaseFilter;
}])
</script>
<div ng-app="myStatefulFilterApp" ng-controller="personController">
<div ng-repeat="definition in definitions | titleCaseFilter">
<div>{{definition}}</div>
<div ng-repeat="def in definitions | startsWith:definition">
{{def}}
</div>
</div>
</div>
`