11 KiB
title | localeTitle |
---|---|
Map the Debris | Карта обломков |
Не забудьте использовать Read-Search-Ask
если вы застряли. Попробуйте подключить программу и напишите свой собственный код
Проблема Объяснение:
Первое, что нужно сделать, это познакомиться с программой, зная, что такое орбитальный период. Вы должны вернуть новый массив, который преобразует среднюю высоту элемента в их орбитальные периоды. Детали, которые обычно находили сложными, находят формулу, реализуют ее и для некоторых людей, изменяя объекты ключом. Тем не менее, что-то, что не очень понятно, заключается в том, что ваша программа должна иметь возможность проверять любое количество объектов в массиве; Это то, что проверено на второй части.
Связанные ссылки
Подсказка: 1
Необходимая формула:
попытаться решить проблему сейчас
Подсказка: 2
Используйте Math.round()
для округления до следующего целого числа в соответствии с запросом. Использование Math.ceil()
позволит вам пройти первый тест, но не Math.ceil()
второй.
попытаться решить проблему сейчас
Подсказка: 3
Узнайте, как удалить и добавить ключ к объекту JavaScript.
попытаться решить проблему сейчас
Осторожно, спойлеры!
Решение впереди!
Решение базового кода:
function orbitalPeriod(arr) {
var GM = 398600.4418;
var earthRadius = 6367.4447;
var a = 2 * Math.PI;
var newArr = [];
var getOrbPeriod = function(obj) {
var c = Math.pow(earthRadius + obj.avgAlt, 3);
var b = Math.sqrt(c / GM);
var orbPeriod = Math.round(a * b);
delete obj.avgAlt;
obj.orbitalPeriod = orbPeriod;
return obj;
};
for (var elem in arr) {
newArr.push(getOrbPeriod(arr[elem]));
}
return newArr;
}
// test here
orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
Код Объяснение:
- GM и earthRadius даны нам.
- Чтобы упростить редактирование и чтение кода, каждая часть уравнения записывается отдельно.
- Создайте newArr для хранения
orbPeriod
. - a - 2 раза pi. Часть, которая является константой, находится в глобальном масштабе, а остальная часть - часть функции.
- Создайте функцию
gerOrbPeriod()
, которая выполнит необходимую работу для любого количества объектов. - c является ( earthRadius + avgAlt ) в куб.
- b - квадратный корень из c, деленный на GM .
- Создайте orbPeriod для сохранения продукта a и b , используя функцию
Math.round()
применяемую для округления до следующего целого числа. - Затем мы удаляем ключ avgAlt и добавляем новый ключ и его значение.
Связанные ссылки
Решение промежуточного кода:
function orbitalPeriod(arr) {
var GM = 398600.4418;
var earthRadius = 6367.4447;
//Looping through each key in arr object
for(var prop in arr) {
//Rounding off the orbital period value
var orbitalPer = Math.round(2 * Math.PI * Math.sqrt(Math.pow(arr[prop].avgAlt + earthRadius, 3) / GM));
//deleting the avgAlt property
delete arr[prop].avgAlt;
//adding orbitalPeriod property
arr[prop].orbitalPeriod = orbitalPer;
}
return arr;
}
// test here
orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
Код Объяснение:
- GM и earthRadius даны нам.
- Цикл
for..in
используется для повторения каждого значения в заданном массиве arr . - orbitalPer содержит значение орбитального периода для каждой итерации, рассчитанной по формуле.
- Ключ avgAlt удаляется, а найденный orbitalPer присваивается в обр .
Расширенное решение для кода:
function orbitalPeriod(arr) {
var GM = 398600.4418;
var earthRadius = 6367.4447;
// Loop through each item in the array arr
arr.forEach(function(item) {
// Calculate the Orbital period value
var tmp = Math.round(2 * Math.PI * Math.sqrt(Math.pow(earthRadius + item.avgAlt, 3) / GM));
//Delete the avgAlt property
delete item.avgAlt;
//Add orbitalPeriod property
item.orbitalPeriod = tmp;
});
return arr;
}
// test here
orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
Код Объяснение:
- GM и earthRadius даны нам.
- Метод
forEach()
используется для выполнения функции один раз для элемента ( элемента ) в обр . - tmp содержит значение орбитального периода для каждого элемента, вычисленного по формуле.
- Ключ avgAlt удаляется, и найденный орбитальный период ( tmp ) присваивается ключу orbitalPeriod .
Связанные ссылки
ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
- НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
- Добавьте объяснение своего решения.
- Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced .
- Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( НЕ удаляйте существующие имена пользователей )
Видеть
Wiki Challenge Solution Template
дляWiki Challenge Solution Template
для справки.