Здравствуйте, я практикую ката кодовых войн, и я не понимаю, почему я не могу привязать .join
к Math.pow
.
Вот инструкции:
https://www.codewars.com/kata/546e2562b03326
Добро пожаловать. В этом ката вас просят возвести в квадрат каждую цифру числа и соединить их. Например, если мы пропустим 9119 через функцию, выйдет 811181, потому что 92 - это 81, а 12 - 1.
Вот мой код: Я преобразовал переданное число в массив, чтобы я мог перебирать его с помощью .map
и возводить каждый элемент в квадрат. Затем я хочу снова объединить результаты моей карты, но это не работает ...
function squareDigits(num){
const convertNumToArray = Array.from(String(num));
return convertNumToArray.map((num) => {
return Math.pow(num,2).join("")
})
}
Вот тестовый пример:
Test.assertEquals(squareDigits(9119), 811181);
Вот ошибка:
TypeError: Math.pow(...).join is not a function
at convertNumToArray.map
at Array.map
at squareDigits
at /home/codewarrior/index.js:21:23
at /home/codewarrior/index.js:23:5
at Object.handleError
2 ответа
Вот ответ
function squareDigits(num){
return Number(String(num).split('').map((c)=>c*c).join(''))
}
Как отметил @Andreas в комментариях, вам необходимо применить Array.join
к результату Array.map
, а не Math.pow
, который не возвращает массив. Используя стрелочные функции ES6, вы можете написать это в одну строку:
const squareDigits = (num) =>
Array
.from(String(num))
.map((digit) => Math.pow(digit, 2))
.join('');
console.log(squareDigits(9119));
console.log(squareDigits(573));
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.