为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复:系统找不到指定的文件 - JS 中的 .reduce() 相关

如何修复:系统找不到指定的文件 - JS 中的 .reduce() 相关

梦里花落0921 2021-08-26 16:36:28
编写一个函数,它接受一个正参数 num 并返回它的乘法持久性,它是你必须将 num 中的数字相乘直到达到一位数的次数。例如:939 -> 9*3*9 = 243 -> 2*4*3 = 24 -> 2*4 = 8 // 总计:3 次我尝试了代码,但它返回:在 Atom 上:“系统找不到指定的文件。” // 我使用脚本包在 repl.it 上:“tempoOne.reduce() 不是函数”`let persistence = (num) => {  let tempoOne, tempoTwo;  let count = 0;  let changeToString = num.toString();  let numArray = changeToString.split('');  var calculator = (accumulator, currentValue) => accumulator*currentValue;  tempoOne = numArray;  do {    tempoOne = tempoOne.reduce(calculator);    count++;  } while (tempoOne/10 >= 0);  return count;}console.log(persistence(939));`
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您可能想reduce再次拆分结果:


let persistence = (num) => {

  let tempoOne, tempoTwo;

  let count = 0;

  let numArray = num.toString().split('');

  var calculator = (accumulator, currentValue) => accumulator * currentValue;

  var result;

  tempoOne = numArray;


  do {

    result = tempoOne.reduce(calculator);

    tempoOne = result.toString().split('');

    count++;

  } while (result / 10 > 1);

  return count;

}

console.log(persistence(939));

无result变量:


let persistence = (num) => {

  let tempoOne, tempoTwo;

  let count = 0;

  let numArray = num.toString().split('');

  var calculator = (accumulator, currentValue) => accumulator * currentValue;

  var result;

  tempoOne = numArray;


  do {

    tempoOne = tempoOne.reduce(calculator).toString().split('');

    count++;

  } while (tempoOne.length > 1);

  return count;

}

console.log(persistence(939));


查看完整回答
反对 回复 2021-08-26
?
郎朗坤

TA贡献1921条经验 获得超9个赞

把你tempoOne回string并split过来迭代:


    let persistence = (num) => {

    

      let tempoOne, tempoTwo;

      let count = 0

      var calculator = (accumulator, currentValue) => accumulator*parseInt(currentValue);


    tempoOne = num;    


      do {

        tempoOne = tempoOne.toString().split('').reduce(calculator, 1);

        count++;

      } while (tempoOne/10 > 1);

      return count;

    }

    console.log(persistence(939));

我注意到您的方法中的一些错误可能会导致一些错误:

  1. 当你split()是一个字符串时,你会得到一个字符串数组,所以你必须在乘以它之前将它解析为 int ,因为你不想乘以字符串(添加parseInt到你的reduce callback并以中性乘法因子开始:)1

  2. 您不必split跳出循环,因为您想tempoOne成为循环内的字符串才能split()正常工作(删除了split外部循环并添加到循环中)。


查看完整回答
反对 回复 2021-08-26
  • 2 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信