
轨道周期算法挑战
方法一:
var orbitalPeriod=(function() {
// r^3=G*m2*T^2/(4*pi^2) m2是地球质量 G为6.67×10-11 r为轨道半径,到球心的距离
var GM = 398600.4418; //地球质量和G的乘积
var earthRadius = 6367.4447; //km
var calculate=function(r){ //计算函数
var top=4*Math.pow(Math.PI,2)*Math.pow((r+earthRadius),3);
var res=Math.pow( (top/GM),0.5);
return Math.round(res);
};
return function(arr){
var res=[];
for(let a of arr){
let obj={};
obj["name"]=a["name"];
obj["orbitalPeriod"]=calculate(a["avgAlt"]);
res.push(obj);
}
return res;
};
})();
orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
方法二:
function orbitalPeriod(arr) {
var GM = 398600.4418;
var earthRadius = 6367.4447;
var rArr = [];
arr.forEach(function (obj) {
var newObj = {};
newObj.name = obj.name;
newObj.orbitalPeriod = Math.round(2 * 3.14159265 * Math.pow(Math.pow(earthRadius + obj.avgAlt, 3) / GM, 0.5));
rArr.push(newObj);
});
return rArr;
}
orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);