You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
4.0 KiB

2 years ago
2 years ago
  1. /**
  2. * 傳入姓名返回首字複姓返回兩個字英文返回大寫
  3. * @param {*} fullname
  4. * @param {*} lang
  5. * @returns
  6. */
  7. export function getFirstName(fullname,lang) {
  8. let hyphenated = ['欧阳', '太史', '端木', '上官', '司马', '东方', '独孤', '南宫', '万俟', '闻人',
  9. '夏侯', '诸葛', '尉迟', '公羊', '赫连', '澹台', '皇甫', '宗政', '濮阳', '公冶',
  10. '太叔', '申屠', '公孙', '慕容', '仲孙', '钟离', '长孙', '宇文', '城池', '司徒',
  11. '鲜于', '司空', '汝嫣', '闾丘', '子车', '亓官', '司寇', '巫马', '公西', '颛孙',
  12. '壤驷', '公良', '漆雕', '乐正', '宰父', '谷梁', '拓跋', '夹谷', '轩辕', '令狐',
  13. '段干', '百里', '呼延', '东郭', '南门', '羊舌', '微生', '公户', '公玉', '公仪',
  14. '梁丘', '公仲', '公上', '公门', '公山', '公坚', '左丘', '公伯', '西门', '公祖',
  15. '第五', '公乘', '贯丘', '公皙', '南荣', '东里', '东宫', '仲长', '子书', '子桑',
  16. '即墨', '达奚', '褚师'];
  17. if(lang=='zh-TW'){
  18. hyphenated = ['歐陽', '太史', '端木', '上官', '司馬', '東方', '獨孤', '南宮', '萬俟', '聞人',
  19. '夏侯', '諸葛', '尉遲', '公羊', '赫連', '淡臺', '皇甫', '宗政', '濮陽', '公冶',
  20. '太叔', '申屠', '公孫', '慕容', '仲孫', '鐘離', '長孫', '宇文', '城池', '司徒',
  21. '鮮於', '司空', '汝嫣', '閭丘', '子車', '亓官', '司寇', '巫馬', '公西', '顓孫',
  22. '壤駟', '公良', '漆雕', '樂正', '宰父', '谷梁', '拓跋', '夾谷', '軒轅', '令狐',
  23. '段幹', '百裏', '呼延', '東郭', '南門', '羊舌', '微生', '公戶', '公玉', '公儀',
  24. '梁丘', '公仲', '公上', '公門', '公山', '公堅', '左丘', '公伯', '西門', '公祖',
  25. '第五', '公乘', '貫丘', '公皙', '南榮', '東裏', '東宮', '仲長', '子書', '子桑',
  26. '即墨', '達奚', '褚師'];
  27. }
  28. if(fullname == undefined || fullname == null || fullname == ''){
  29. return ["",true];
  30. }
  31. var re = /[A-Za-z]+/;
  32. var result = fullname.search(re);
  33. if(result>=0){
  34. return [fullname.substr(0, 1).toUpperCase(),false];
  35. }
  36. let hyset = new Set(hyphenated);
  37. let vLength = fullname.length;
  38. // 前為姓,后為名
  39. let lastname = '', firstname = '';
  40. if (vLength > 2){
  41. var preTwoWords = fullname.substr(0, 2);
  42. // 取名字的前兩個字,看是否在複姓庫中
  43. if (hyset.has(preTwoWords)){
  44. firstname = preTwoWords;
  45. // lastname = fullname.substr(2);
  46. }else{
  47. firstname = fullname.substr(0, 1);
  48. // lastname = fullname.substr(1);
  49. }
  50. }else if (vLength === 2){
  51. // 全名只有兩個字時,前一個為姓,後一個為名
  52. firstname = fullname.substr(0, 1);
  53. // lastname = fullname.substr(1);
  54. }else{
  55. firstname = fullname;
  56. }
  57. return [firstname,true];
  58. };
  59. /**
  60. * 判斷日期是否在周末
  61. * @param {*} date
  62. * @returns
  63. */
  64. export function dateIsInWeekend(date) {
  65. var givenDate=new Date(date);
  66. var currentDay = givenDate.getDay();
  67. // var dateIsInWeekend = (currentDay === 6) || (currentDay === 0);
  68. return currentDay;
  69. }
  70. /**
  71. * 判斷日期是number
  72. * @param {*} value
  73. * @returns
  74. */
  75. export function IsNumber(value) {
  76. return !isNaN(parseFloat(value)) && isFinite(value);
  77. }
  78. /**
  79. * 過濾數據
  80. * @param {*} condition
  81. * @param {*} data
  82. * @returns
  83. */
  84. export function filterData(condition,data){
  85. if(data.length<0){
  86. return [];
  87. }
  88. return data.filter( item => {
  89. return Object.keys( condition ).every( key => {
  90. return String( item[ key ] ).toLowerCase().includes(
  91. String( condition[ key ] ).trim().toLowerCase() )
  92. } )
  93. } )
  94. }