轨道周期算法挑战

挑战:

参考:Map the Debris
海拔高度转轨道周期公式为 2 * π * √(avgDist³ / GM)

返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期.

原数组中会包含格式化的对象内容,像这样 {name: ‘name’, avgAlt: avgAlt}.

至于轨道周期怎么求,戳这里 on wikipedia (不想看英文的话可以自行搜索以轨道高度计算轨道周期的公式).

求得的值应该是一个与其最接近的整数,轨道是以地球为基准的.

地球半径是 6367.4447 kilometers, 地球的GM值是 398600.4418, 圆周率为Math.PI

例如:

orbitalPeriod([{name : “sputnik”, avgAlt : 35873.5553}])
应该返回 [{name: “sputnik”, orbitalPeriod: 86400}].

rbitalPeriod([{name: “iss”, avgAlt: 413.6},
{name: “hubble”, avgAlt: 556.7},
{name: “moon”, avgAlt: 378632.553}])
应该返回 [{name : “iss”, orbitalPeriod: 5557},
{name: “hubble”, orbitalPeriod: 5734},
{name: “moon”, orbitalPeriod: 2377399}].

答案:

方法 描述
forEach() 数组每个元素都执行一次回调函数。
=> 箭头函数相当于匿名函数,并且简化了函数定义。
round(x) 把数四舍五入为最接近的整数。
PI 返回圆周率(约等于3.14159)。
sqrt(x) 返回数的平方根。
pow(x,y) 返回 x 的 y 次幂。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
function orbitalPeriod(arr) {
  var GM = 398600.4418;
  var earthRadius = 6367.4447;
  var rArr = [];
  arr.forEach((obj) => {
      var newObj = {};
      newObj.name = obj.name;
      newObj.orbitalPeriod = Math.round(2 * Math.PI * Math.sqrt(Math.pow(earthRadius + obj.avgAlt, 3) / GM)) ;
      rArr.push(newObj);
  });
  return rArr;
}

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

运行结果:

[{“name”:“sputnik”,“orbitalPeriod”:86400}]

在线测试:

轨道周期算法挑战 | w3cschool

发布了56 篇原创文章 · 获赞 1 · 访问量 830

猜你喜欢

转载自blog.csdn.net/weixin_44790207/article/details/104888458