Map the Debris

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

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

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

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

由海拔高度转轨道周期公式为 2 * π * √(avgDist³ / GM)

根据公式直接求解,直接套用公式即可,问题上如何处理数据修改过程。下意识反应是通过遍历数组,获取到平均海拔后,求出轨道周期,再为每一组添加轨道周期字段,删除平均海拔字段,返回即可,代码如下:

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

  arr.forEach(function(item) {
    var r = item.avgAlt + earthRadius;                                                        
    T = 2 * Math.PI * Math.sqrt(r * r * r / GM);     
    item.orbitalPeriod = Math.round(T);
    delete item.avgAlt;
  });
  
  return arr;
 }
}

以上方案是可以通过测试,但没有可读性,无法直观的知道处理的映射关系,改进后具有可读性的代码如下:

function orbitalPeriod(arr) {
  var GM = 398600.4418;
  var earthRadius = 6367.4447;
  var result = [];
  
  arr.forEach(function(item) {
    result.push({
      name: item.name,
      orbitalPeriod: getOrbitalPeriod(item.avgAlt, GM, earthRadius)
    });    
  });
  
  return result;
  
  function getOrbitalPeriod(avgAlt, GM, planetRadius) {
    return Math.round(2 * Math.PI * Math.sqrt(Math.pow(avgAlt + planetRadius, 3) / GM)) ;
  }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要求 返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期.原数组中会包含格式化的对象内容,像...
    Oracle_c113阅读 203评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,962评论 19 139
  • 译者注:这里面的内容主要是分析mp4/3gp文件的层级结构,详细的介绍了各种不同的box的结构等,网上有一些参考资...
    HaloMartin阅读 2,753评论 0 2
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,170评论 6 13
  • 那一天我二十一岁,在我一生的黄金时代。我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云。后来我才知道,...
    Jo_608a阅读 177评论 0 0