Уж ежели автор использует push...
function reverseArray(array) {
let output = [];
do {
output.push(array.pop());
} while (array.length);
return output;
}
alert(reverseArray([1,2,3,4,5]));
PS: лично мне естественней вариант автора, т.к. в задании - Цитата:
|
Цитата:
Цитата:
Меня больше стиль кода интересует, где логику делать в параметрах или внутри. А то когда нить устроишься поработать, а "коллеги" спросят что за колхозный ниндзя код и сломают нос. А мне носик жалко, т.к. он у меня один. |
Цитата:
function reverseArray(array) {
let output = [];
do {
output.push(array.pop());
} while (array.length);
return output;
}
alert(JSON.stringify(reverseArray([])));
Хотя лучше, конечно, так
function reverseArray(array) {
let output = [];
while (array.length) {
output.push(array.pop());
} ;
return output;
}
alert(JSON.stringify(reverseArray([])));
|
Наверное я непонятно спросил, меня решение той задачки не интересует.
Вот другая задачка автора книги: Вызываем функцию range(21, 54, 2) она должна вернуть сумму чисел в диапазоне 1 и 2 параметра (21, 54), а третьий параметр - шаг чисел
// Сумма диапазона
function range(start, end, step = start < end ? 1 : -1) {
let array = [];
if (step > 0) {
for (let i = start; i <= end; i += step) array.push(i);
} else {
for (let i = start; i >= end; i += step) array.push(i);
}
return array;
}
Вот у него опять в параметры пошла логика решения задачи (step =...). А я сделал решение где это внутри функции. Меня этот стиль кодирования интересует. |
Цитата:
|
родной реверс так работает, с обоих сторон фигачит =)
2 перестановки за итерацию
function reverse(array) {
var j = array.length - 1;
for (var i = 0; i < j; i++, j--) {
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
|
Цитата:
function range(start, end, step = start < end ? 1 : -1) {
let array = [];
if (step > 0) {
for (let i = start; i <= end; i += step) array.push(i);
} else {
for (let i = start; i >= end; i += step) array.push(i);
}
return array;
}
alert(range(54,21,2));
Это решение автора? |
Dilettante_Pro, судя по комментарию функция должна была вообще сумму диапазона возвращать, а не сам диапазон...
|
Цитата:
Вот полностью решение, там вторая функция (это практические задачки по закреплению пройденного материала):
// Сумма диапазона
function range(start, end, step = start < end ? 1 : -1) {
let array = [];
if (step > 0) {
for (let i = start; i <= end; i += step) array.push(i);
} else {
for (let i = start; i >= end; i += step) array.push(i);
}
return array;
}
function sum(array) {
let total = 0;
for (let value of array) {
total += value;
}
return total;
}
console.log(sum(range(1, 10))); // → 55
console.log(range(5, 2, -1)); // [5, 4, 3, 2]
Спасибо всем за участие в этой непонятной теме. В общем я понял что повторяющиеся вычисления в цикле если возможно выносим в условие, а в параметры функции - это уже понты. |
Nexus,
Да она ничего не возвращает - хоть сумму, хоть диапазон... |
| Часовой пояс GMT +3, время: 02:19. |