{ name: "name", avgAlt: "avgAlt"} 에서 avgAlt
는 average altitude
이며 평균 고도를 나타낸다. 고도는 지구 표면에서 물체가 떨어져 있는 높이를 나타낸다. 이 문제는 지구를 기준으로 떨어져 있는 달, 위성, 화성... 등의 평균고도의 값이 있는 객체형태를 배열 안에 나열되어있다. avgAlt
를 orbitalPeriod
로 바꿔서 새로운 배열로 반환해야한다.
orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}])
--> [{name: "sputnik", orbitalPeriod: 86400}]
orbitalPeriod([{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}]
function orbitalPeriod(arr) {
var GM = 398600.4418;
var earthRadius = 6367.4447;
const calculate = val => {
const { name, avgAlt } = val;
const orbitalsSemiMajorAxis = earthRadius + avgAlt; // 지구 중심에서 물체까지의 거리
const orbitalPeriod = Math.round(
2 * Math.PI * Math.sqrt(
Math.pow(orbitalsSemiMajorAxis, 3) / GM
)
)
return { name, orbitalPeriod };
}
return arr.map(calculate);
}
공전 주기를 구하는데 필요한 참고자료를 제공해 준다.
https://en.wikipedia.org/wiki/Orbital_period
위에 나와 있는 공식을 이해하는데 시간이 걸렸다. orbitalsSemiMajorAxis
만 알면 나머지는 공식대로 적절할 메소드를 사용했다.
기빈님 요즘 블로그를 왜 안하시나요..ㅜㅜ