无法将 .join() 方法链接到 Math.pow 以将数组改回整数
Cannot chain .join() method onto Math.pow to change array back to integers
你好,我正在练习代码战争套路,我不明白为什么我不能将 .join
链接到 Math.pow
。
说明如下:
https://www.codewars.com/kata/546e2562b03326a88e000020/train/javascript
欢迎光临。在这个型中,要求您对数字的每个数字进行平方并将它们连接起来。
比如我们通过函数运行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
答案在这里
function squareDigits(num){
return Number(String(num).split('').map((c)=>c*c).join(''))
}
正如@Andreas 在评论中指出的那样,您需要应用 Array.join
to the result of Array.map
,而不是 Math.pow
,这不是 return 数组。使用 ES6 箭头函数,您可以将其写在一行中:
const squareDigits = (num) =>
Array
.from(String(num))
.map((digit) => Math.pow(digit, 2))
.join('');
console.log(squareDigits(9119));
console.log(squareDigits(573));
你好,我正在练习代码战争套路,我不明白为什么我不能将 .join
链接到 Math.pow
。
说明如下: https://www.codewars.com/kata/546e2562b03326a88e000020/train/javascript
欢迎光临。在这个型中,要求您对数字的每个数字进行平方并将它们连接起来。 比如我们通过函数运行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
答案在这里
function squareDigits(num){
return Number(String(num).split('').map((c)=>c*c).join(''))
}
正如@Andreas 在评论中指出的那样,您需要应用 Array.join
to the result of Array.map
,而不是 Math.pow
,这不是 return 数组。使用 ES6 箭头函数,您可以将其写在一行中:
const squareDigits = (num) =>
Array
.from(String(num))
.map((digit) => Math.pow(digit, 2))
.join('');
console.log(squareDigits(9119));
console.log(squareDigits(573));