javascript - 无法将 .join() 方法链接到 Math.pow 以将数组更改回整数
问题描述
您好,我正在练习代码大战 kata,但我不明白为什么我不能链接.join
到Math.pow
.
以下是说明: https ://www.codewars.com/kata/546e2562b03326a88e000020/train/javascript
欢迎。在这个 kata 中,您被要求对数字的每个数字求平方并将它们连接起来。例如,如果我们通过函数运行 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
解决方案
正如@Andreas 在评论中指出的那样,您需要将Array.join
结果应用于不返回数组的Array.map
, not 。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));
推荐阅读
- android - 我如何在本机反应中启用 proguard
- mysql - 如何删除多余的撇号
- javascript - ngx-gauge 不显示接收到的数据
- vim - 无法让这些控制键在 vim 中工作
- c# - NUnit TestCaseAttribute 在 LeanFT TestTearDown 中抛出异常
- python - 使用python降噪将其他人的声音视为噪音
- arrays - 如何在 HTML 标记中访问模板 html 中的数组中的值
- python - 使用 OpenCV Python 检测和可视化两个图像之间的差异
- java - 如何在intellij idea中使用数据库进行登录
- docker - 对“设备上没有剩余空间”异常感到困惑