Как реализовать шифрование слова цифрами?

Подскажите, как реализовать шифрование слова цифрами? Первой букве, а так же всем ее повторениям присваивается 0, следующей 1, и т.д. Регистр не учитывается. Пример: hello -> 0.1.2.2.3 hellohello -> 0.1.2.2.3.0.1.2.2.3

У меня получилось сделать без учета повторения

function wordPattern(word) {
    let count = 0;
    let arr = word.toString().toUpperCase().split("");
    for (let i=0, i<arr.lenght, i++) {
        arr[i] !== arr[i+1] ? arr[i] = count & count++ : arr[i] = count
    }
    return arr.join (".") ;
}
console.log(wordPattern("hellohello"));

Есть мысли, что надо через forEach, но как сделать не пойму


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

Автор решения: renich
  1. Разбиваем строку на символы, используяsplit.
  2. С помощью Set создаём массив с уникальными символами.
  3. Заменяем каждый символ оригинальной строки индексом массива с уникальными символами.

const str = "hElLoHellO";
const splited = str.toLowerCase().split('');
const unique = [...new Set(splited)];
const res = splited.map(item => unique.indexOf(item)).join('.');
console.log(res);

→ Ссылка