深度等于错误?

时间:2015-06-25 02:27:54

标签: javascript oop

我目前正在使用FreeCodeCamp来尝试学习基本的JavaScript脚本。我目前正在处理的问题是:

https://github.com/neo4j/neo4j/issues/4893

问题涉及使用OOP来解决特定任务(从给定高度计算轨道周期)。

我的代码如下:

 function orbitalPeriod(arr) {
  var GM = 398600.4418;
  var earthRadius = 6367.4447;

  this.arr = arr;

  for(var i = 0; i < arr.length; i++){
     var altitude = this.arr[i]["avgAlt"] + earthRadius;
     var calc = Math.round((2*Math.PI) * Math.sqrt(Math.pow(altitude,3) / GM),1);

     this.arr[i]["avgAlt"] = calc;
  }

 return this.arr;
}



orbitalPeriod([{name : "sputkin", avgAlt : 35873.5553}]);

问题不在于我的计算。相反,当我提交我的代码时,我得到:&#34;预期[{name:&#39; sputkin&#39;,avgAlt:86400}]深度相等[Array(1)]&#34;。有谁知道它为什么告诉我应该返回一个数组(1)?

1 个答案:

答案 0 :(得分:3)

测试套件期望返回数组包含具有属性nameorbitalPeriod的对象 - 您的返回数组包含具有属性name和{{1}的对象}}

附注,不要使用this关键字,除非您确定它的作用 - 并且我保证您不会按照您的想法执行此操作。

这是解决方案,与您的解决方案进行比较。你的计算是正确的,在这方面做得很好。

avgAlt

额外注意:Math.round()只接受一个参数。

奖金回答:

如果我们没有针对性能进行调整,那么

Array.prototype.map()会让这个超级干净。

function orbitalPeriod(arr) {
  var GM = 398600.4418,
      earthRadius = 6367.4447,
      output = [], altitude, calc;

  for (var i = 0; i < arr.length; i++){
     altitude = arr[i].avgAlt + earthRadius;
     calc = Math.round((2*Math.PI) * Math.sqrt(Math.pow(altitude,3) / GM));

     output.push({
       name: arr[i].name,
       orbitalPeriod: calc
     });
  }

 return output;
}

orbitalPeriod([{name : "sputkin", avgAlt : 35873.5553}]);