【发布时间】:2016-09-22 16:23:57
【问题描述】:
我需要制作一个角度过滤器,它将采用全名,并初始化名字,只留下姓氏,除非在某些情况下(例如 Van Aanholt)。
所以如下:
Yohan Cabaye
Oscar
Jordi Alba Ramos
Patrick Van Aanholt
Hatem Ben Arfa
将显示为:
Y. Cabaye
Oscar
J. Ramos
P. Van Aanholt
H. Ben Arfa
任何帮助将不胜感激。
更新:这是我尝试过的......
angular.module('euroFilters', [])
.filter('initialiseName', function() {
return function(name) {
var nameArr = name.split(' ');
var firstName = nameArr[0];
var firstNameInitial = nameArr[0][0] + ". ";
var lastName = nameArr[nameArr.length - 1];
var secondaryLastName = nameArr[nameArr.length - 2];
// If only one name (standard)...
if (nameArr.length <= 1) {
return firstName;
}
// If more than one name, and contains "Van" or "Ben" (exception)...
else if (secondaryLastName === "Van" || secondaryLastName === "Ben") {
return firstNameInitial + " " + secondaryLastName + " " + lastName;
}
// If more than one name (standard)...
else if (nameArr.length > 1) {
return firstNameInitial + lastName;
}
};
});
有没有更优雅的方式来写这个?例如,它将如何转换为switch 语句?
【问题讨论】:
-
已添加更新 - 请查看。
标签: angularjs filter initialization names