Убрать повторы и регистр первой буквы, цикл и регулярные выражения

Написал такой код:

  var textt = "Представляет, дел, один-два, представляет, Один-два, Дел, Один-два";

    texttprep = textt.match(/[а-я-]+/giu);
    var lenres = texttprep.length;

    for(var i = 0; lenres>i; i++){

    textt = textt.replace(new RegExp('(^|[^a-zA-Z0-9а-яА-ЯёЁ_-])' + texttprep[i] + '([a-zA-Z0-9а-яА-ЯёЁ_-]*)(?![a-zA-Z0-9а-яА-ЯёЁ_-])', 'giu'),function(full_match, _1st_group){
    return(/-/.test(_1st_group) ? full_match + _1st_group : _1st_group + texttprep[i] + _1st_group)+"(слово)";
    });

    }
    textt

Получается ответ:

представляет(слово)(слово), Дел (слово) (слово), Один-два (слово) (слово) (слово), представляет (слово) (слово), Один-два (слово) (слово) (слово), Дел (слово) (слово), Один-два (слово) (слово) (слово)

Как делать так, чтобы первая буква была заглавной и пробелом как в исходном тексте, а (слово) добавилась только один раз (Нужно чтобы цикл подставлял только один раз). Должен получиться такой ответ:

Представляет (слово), Дел (слово), Один-два (слово), представляет (слово), Один-два (слово), Дел (слово), Один-два (слово)

Ответы (1 шт):

Автор решения: Давид Манжула

Это потому что вы проходитесь циклом по строке и каждый раз заменяете все слова, в итоге делая замену по несколько раз над словом.

Что делает ваш код:

  1. Имеем строку Представляет, дел, один-два, представляет, Один-два, Дел, Один-два
  2. Разбиваем ее регуляркой /[а-я-]+/giu - получаем "Представляет", "дел", "один-два", "представляет", "Один-два", "Дел", "Один-два"
  3. Проходимся циклом по словам из п.2 и заменяем его на то же слово, но прибавляя "(слово)"

Давайте продемонстрирую:

Заменяем: Представляет. Результат:
Представляет(слово), дел, один-два,Представляет (слово), Один-два, Дел, Один-два

Заменяем: дел. Результат:
Представляет(слово),дел (слово), один-два, Представляет (слово), Один-два,дел (слово), Один-два

Заменяем: один-два. Результат:
Представляет(слово), дел (слово),один-два (слово), Представляет (слово),один-два (слово), дел (слово),один-два (слово)

Заменяем: представляет. Результат:
представляет(слово)(слово), дел (слово), один-два (слово),представляет (слово) (слово), один-два (слово), дел (слово), один-два (слово)

Заменяем: Один-два. Результат:
представляет(слово)(слово), дел (слово),Один-два (слово) (слово), представляет (слово) (слово),Один-два (слово) (слово), дел (слово),Один-два (слово) (слово)

Заменяем: Дел. Результат:
представляет(слово)(слово),Дел (слово) (слово), Один-два (слово) (слово), представляет (слово) (слово), Один-два (слово) (слово),Дел (слово) (слово), Один-два (слово) (слово)

Заменяем: Один-два. Результат:
представляет(слово)(слово), Дел (слово) (слово),Один-два (слово) (слово) (слово), представляет (слово) (слово),Один-два (слово) (слово) (слово), Дел (слово) (слово),Один-два (слово) (слово) (слово)


Я не совсем понял суть задачи, поэтому не могу посоветовать решение, но источник проблемы нашел=)

→ Ссылка