猿问

无法将 .join() 方法链接到 Math.pow 上以将数组更改回整数

您好,我正在练习代码战争型,我不明白为什么我不能链接.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


慕尼黑8549860
浏览 140回答 2
2回答

MMMHUHU

您需要应用于, notArray.join的结果,它不返回数组。使用 ES6 箭头函数,您可以将其写在一行中:Array.mapMath.powconst squareDigits = (num) =>  Array  .from(String(num))  .map((digit) => Math.pow(digit, 2))  .join('');console.log(squareDigits(9119));console.log(squareDigits(573));

慕侠2389804

这是答案function squareDigits(num){   return Number(String(num).split('').map((c)=>c*c).join('')) }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答