Метод vue рефакторинга

Может ли кто-нибудь сказать мне, как я могу реорганизовать этот метод или просто дать мне представление о том, что я должен изменить? Идея состоит в том, чтобы создать функцию для изменения имени авторов, потому что я всегда получаю имена в верхнем регистре, и мне нужна только первая буква и исключать (имена на испанском языке) "де", "эль", "ла" и "'","-", которые также иногда используются.

  methods: {
    nameAuthor (v) {
      const author = v.toLowerCase().split(' ')
      const exceptions = ["'", '-', 'y', 'de', 'la']
      const longitud = exceptions.length
      for (let i = 0; i < author.length; i++) {
        for (let u = 0; u < longitud; u++) {
          if (!exceptions.includes(author[i])) {
            author[i] = author[i].charAt(0).toUpperCase() + author[i].substring(1)
          }
        }
        if (author[i].includes(exceptions[0])) {
          const especialCharacter = author[i].split("'")
          author[i] = especialCharacter[0] + "'" + especialCharacter[1].charAt(0).toUpperCase() + especialCharacter[1].substring(1)
        }
        if (author[i].includes(exceptions[1])) {
          const especialCharacter = author[i].split('-')
          author[i] = especialCharacter[0] + '-' + especialCharacter[1].charAt(0).toUpperCase() + especialCharacter[1].substring(1)
        }
      }
      return author.join(' ')
    }
  }

Заранее спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы разделил ее на три подзадачи.

  1. Прописная первая буква каждого «слова».
  2. Использование нижнего регистра специальных частей имени

Ответ на первую задачу здесь и дает вам следующую функцию:

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}
function capitalizeEachWord(phrase) {
   return phrase.split("'").map(capitalizeFirstLetter).join("'")
                .split("-").map(capitalizeFirstLetter).join("-")
                .split(" ").map(capitalizeFirstLetter).join(" ");

}

Вторую проблему теперь можно решить с помощью следующей функции (при условии, что перед и после специальных частей имени всегда есть пробелы):

function lowerCaseSpecialNameParts (name) {
   return name.replace(" De ", " de ")
              .replace(" La ", " la ")
              .replace(" El ", " el ");

}

Теперь вы можете комбинировать их оба в своей функции:

methods: {
    nameAuthor (v) {
      return lowerCaseSpecialNameParts(capitalizeEachWord(v.toLowerCase()));
    }
  }

Другие вопросы по теме