深度等于的错误

Error with Deeply Equal To?

本文关键字:错误 深度      更新时间:2023-09-26

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

http://www.freecodecamp.com/challenges/bonfire-map-the-debris.

该问题涉及使用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}]);

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

测试套件期望返回数组包含属性为nameorbitalPeriod的对象,而您的返回数组则包含属性为nameavgAlt的对象。

附带说明,除非你确定它的作用,否则不要使用this关键字——我向你保证,它不会像你认为的那样在这里起作用。

这是解决方案,请将其与您的解决方案进行比较。你的计算是正确的,这部分做得很好。

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}]);

附言:Math.round()只取一个参数。


奖励答案:

如果我们不针对性能进行调整,Array.prototype.map()会使这一点变得非常干净。

function orbitalPeriod(arr) {
  var GM = 398600.4418,
      earthRadius = 6367.4447;
 return arr.map(function (o) {
   return {
     name: o.name,
     orbitalPeriod: Math.round((2 * Math.PI) * Math.sqrt(Math.pow(o.avgAlt + earthRadius, 3) / GM))
   };
 });
}
orbitalPeriod([{name : "sputkin", avgAlt : 35873.5553}]);