@dimka_lubimka

Почему немогу сложить indexof в js?

Привет я обучаюсь js, делаю задания на код ворс. Вот накидал половину решения, но уже пол часа в ступоре из-за того что не могу сложить indexOf элементов массива
console.log(typeof num); выдает number а
console.log(num); NaN Как это вообще возможно??

function addLetters(...letters) {
let alph=[];
let num;
function arrPush(a){
for(i=0;i<a.length;i++){
  b=i+1
  alph.push(a.slice(i,b));
  };
};
arrPush("abcdefghijklmnopqrstuvwxyz");
  for(i=0;i<letters.length;i++){
    num+=1+alph.indexOf(letters[i]);
    /*вот тут я вывел эту переменную*/
    console.log(typeof num);
    console.log(num);
  };
  
};
addLetters('a','b','z');
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 2
TrueBlackBox
@TrueBlackBox
А в чём вообще заключается задание? Какая конечная цель?
Ответ написан
john36allTa
@john36allTa
alien glow of a dirty mind
1. взять код каждой буквы в числовом эквиваленте и вычесть 96('a' = 97, т.е. a = 1, счёт начинаем с 1)
2. Суммировать их
3. Взять остаток от деления полученной суммы на 26 (количество букв) и прибавить 97
То же самое с вашим подходом:
function addLetters(...letters){
	let alphabet = 'abcdefghijklmnopqrstuvwxyz',
		len = alphabet.length,
		sum = len - 1// по умолчанию 'z'
	for (i=0;i<letters.length;i++)
		sum += alphabet.indexOf(letters[i]) + 1 // счет начинается с 1 (a=1)
	return alphabet.substr(sum % len,1) 
}

Засахаренная версия того же:
const addLetters= (...letters) => String.fromCharCode(letters.reduce((sum,v)=>sum+v.charCodeAt()-96,25) % 26 + 97)

Написал исходя из условий катки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы