首页 > 解决方案 > 代码问题解决方案在 TS 操场上有效,但在第三方编码挑战网站上失败

问题描述

以下是我根据测试代码给出的任务,我应该只在它是一个数字时返回。

    16  -->  1 + 6 = 7
   942  -->  9 + 4 + 2 = 15  -->  1 + 5 = 6
132189  -->  1 + 3 + 2 + 1 + 8 + 9 = 24  -->  2 + 4 = 6
493193  -->  4 + 9 + 3 + 1 + 9 + 3 = 29  -->  2 + 9 = 11  -->  1 + 1 = 2

以下是我对上述任务的解决方案。

function digitalRoot(n:number){
      var arr = n.toString(10).replace(/\D/g, '0').split('').map(Number);
      var sum = arr.reduce(function(a,b){
        return a +b;
      },0)
      //console.log(sum)
      var arr2 = sum.toString(10).replace(/\D/g, '0').split('').map(Number);
      var sum2 = arr2.reduce(function(a,b){
      return a + b;
      },0)
      var arr3 = sum2.toString(10).replace(/\D/g, '0').split('').map(Number);
      var sum3 = arr3.reduce(function(a,b){
      return a + b;
      },0)
      if(sum < 9 ){
        console.log(sum2)
        return sum;
      }else if(sum2 < 9){
        console.log(sum)
        return sum2;
      }else{
        console.log(sum3)
        return sum3;
      }
};

在 TS 操场上它工作正常,根据上述任务给我正确的答案,但在第三方网站上,我收到以下错误:

/runner/node_modules/ts-node/src/index.ts:307
        throw new TSError(formatDiagnostics(diagnosticList, cwd, ts, lineOffset))
              ^
    TSError: ⨯ Unable to compile TypeScript
    spec.ts (1,27): File '/home/codewarrior/solution.ts' is not a module. (2306)
        at getOutput (/runner/node_modules/ts-node/src/index.ts:307:15)
        at /runner/node_modules/ts-node/src/index.ts:336:16
        at Object.compile (/runner/node_modules/ts-node/src/index.ts:498:11)
        at Module.m._compile (/runner/node_modules/ts-node/src/index.ts:392:43)
        at Module._extensions..js (module.js:635:10)
        at Object.require.extensions.(anonymous function) [as .ts] (/runner/node_modules/ts-node/src/index.ts:395:12)
        at Module.load (module.js:545:32)
        at tryModuleLoad (module.js:508:12)
        at Function.Module._load (module.js:500:3)
        at Module.require (module.js:568:17)
        at require (internal/module.js:11:18)
        at /runner/node_modules/mocha/lib/mocha.js:231:27
        at Array.forEach (<anonymous>)
        at Mocha.loadFiles (/runner/node_modules/mocha/lib/mocha.js:228:14)
        at Mocha.run (/runner/node_modules/mocha/lib/mocha.js:514:10)
        at Object.<anonymous> (/runner/node_modules/mocha/bin/_mocha:480:18)
        at Module._compile (module.js:624:30)
        at Object.Module._extensions..js (module.js:635:10)
        at Module.load (module.js:545:32)
        at tryModuleLoad (module.js:508:12)
        at Function.Module._load (module.js:500:3)
        at Function.Module.runMain (module.js:665:10)
        at startup (bootstrap_node.js:187:16)
        at bootstrap_node.js:608:3

标签: typescript

解决方案


你没有写类型,这就是问题所在。试试这个。

export const digitalRoot = (n:number):number => {
  var arr = n.toString(10).replace(/\D/g, '0').split('').map(Number);
      var sum = arr.reduce(function(a,b){
        return a +b;
      },0)
      //console.log(sum)
      var arr2  = sum.toString(10).replace(/\D/g, '0').split('').map(Number);
      var sum2 = arr2.reduce(function(a,b){
      return a + b;
      },0)
      var arr3  = sum2.toString(10).replace(/\D/g, '0').split('').map(Number);
      var sum3 = arr3.reduce(function(a,b){
      return a + b;
      },0)
      if(sum < 9 ){
        console.log(sum2)
        return sum;
      }else if(sum2 < 9){
        console.log(sum)
        return sum2;
      }else{
        console.log(sum3)
        return sum3;
      }
};

推荐阅读