Нужна помощь в конвертировании текстовой переменной в цифровую

Нужна помощь в конвертировании текстовой переменной в цифровую Например есть переменная CАF... нужно конвертировать в A-1 C-3 F-6... Т.е должно получится 316

javascript node.js


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

Автор решения: Vadim

Почему пользователи паттерны должны сами разгадывать? это що передача интуыцыя?

const alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; // дефайним массив данных, полученный взломом гугла по адресу 314 кабинета


const convert=(a)=>{
    if(typeof a !== 'string')return false; // если не строка, то нафиг
    
    let r = '';
    for(let k=0; k < a.length; k++){
        r += alphabet.indexOf(a[k])+1; // ищем в алпхабете букаву
    }
    
    return +r; // возвращаем цыфоры
};


// ввод вывод (и мы опять играем в...)
let before = 'CAF'; // твои букавы
let result = convert(before);
console.log(result);

→ Ссылка
Автор решения: Qwertiy

Неправильно ты хочешь, но ладно:

console.log(+"CAF".replace(/./g,m=>parseInt(m,36)-9))

→ Ссылка
Автор решения: OPTIMUS PRIME

Удачно совпало, что parseInt умеет читать числа до 36-ричной системы, где после цифры 9, идут латинские буквы-цифры, A → 10, B → 11, ..., Z → 35

console.log( bubu("ACF") );
console.log( bubu("aaz") );

function bubu( str ) {
  return str.split("").map(e => parseInt(e, 36) - 9).join("");
}

Проблема только в том, что после преобразования, Z → 26 уже не отличишь от BF → 26, поэтому нужно добавить какой-то разделитель в join. Или, "0" перед всеми числами ниже 10.

→ Ссылка