намана, но для массивов есть метод .reverse()
Благодарствую!)
Ремарочка
Думаю, что цель задания была - найти решение с использованием полученных знаний о массивах, а не читтерство с использованием готовых методов
ну вообще да, но эт для тех, кто с программированием не дружил до этого, а так можно велосипед не изобретать, использовать встроенный в язык метод (т.е. не библиотеку стороннюю даже).
Вот ещё вариант:
var numbers = [1, 3, 5, 7, 9, 11];
var srebmun = [];
for (var i = numbers.length - 1; i >= 0; i--) {
srebmun.push(numbers[i]);
}
numbers = srebmun;
Задумка хорошая у авторов, чтобы голову поломать и заставить работать)))
А тебе еще раз спасибо. Твое то решение расписанное пересмотрел несколько раз и теперь уже лучше логику работы цикла понимаю и сюда намного реже за помощью лезу)
Ох уж эти циклы((, @Hierumo, подскажите, что я делаю не так:
var numbers = [13, 8, 5, 27, 11, 7, 45, 3, 9];
for (var i = 0; i < numbers.length; i++) {
for (var j = numbers.length - 1; j > i; j--) {
var swap = numbers[i];
numbers[i] = numbers[j];
numbers[j] = swap;
}
}
// выводит [8, 27, 7, 3, 13, 11, 9, 45, 5]
console.log(numbers);
Про reverse() все нашла и поняла, просто решила вложенные циклы потренировать)))).
для решения через буфер вложенный цикл не требуется.
for (var i = 0; i < numbers.length / 2; i++) {
var swap = numbers[numbers.length - 1 - i];
numbers[numbers.length - 1 - i] = numbers[i];
numbers[i] = swap;
}
Спасибо, с этим способом сообразила тоже. Но вложенный все-таки доконала))), т.к. подумала, что в Вашем примере и примерах выше конструкция numbers.length - 1 - i
можно заменить на j
вложенного цикла, но не знаю лаконичнее/лучше ли это:
var numbers = [13, 8, 5, 27, 11, 7, 45, 3, 9];
for (var i = 0; i < numbers.length - 1; i++) {
for (var j = i + 1; j < numbers.length; j++) {
var swap = numbers[i];
numbers[i] = numbers[j];
numbers[j] = swap;
}
}
console.log(numbers);
нет, не лучше. вообще, говоря о целесообразности, в программировании используется концепция “Большого О”. Так вот, решение через 2 цикла это много сложнее, чем просто 1 цикл. в геометрической прогрессии сложнее.
Поняла. Спасибо
У меня получилось так, прокомментируйте…
можно чуть упростить, все равно цикл через декремент массива:
var numbers = [1, 3, 5, 7, 9, 11];
var res = [];
for (j = numbers.length; j--;) {
res.push(numbers[j])
}
numbers = res;
console.log(numbers);
Спасибо, чёт не подумал(
Как то так
var numbers = [1, 3, 5, 7, 9, 11];
var duble = [];
for (var i = 1; i <= numbers.length; i++) {
duble.push(numbers[numbers.length - i]);
}
numbers = duble;
Ооо. Клево. Не подумал
var numbers = [1, 3, 5, 7, 9, 11];
var first = [];
for(i = numbers.length - 1;i >= 0; i–){
first.push(numbers[i]);
}
numbers = first
Вот так у меня всё получилось
Сводка
for (var i = 0; i <= numbers.length - 2; i++) {
for (var j = i + 1; j <= numbers.length - 1; j++) {
if (i < j) {
var swap = numbers[i];
numbers[i] = numbers[j];
numbers[j] = swap;
}
}
}
Проверьте, пожалуйста, решение:
var numbers = [1, 3, 5, 7, 9, 11];
for (var i=0; i<numbers.length/2; i++) {
var swap = numbers[i];
numbers[i] = numbers[numbers.length-1-i];
numbers[numbers.length-1-i] = swap;
}
Использовал shift
var numbers = [1, 3, 5, 7, 9, 11];
// Сначала добавляем элементы
count = numbers.length;
for (var i = count-2; i != -1; i–) {
numbers.push(numbers[i]);
}
// Удаляем первую половину чисел
for (var j = 0; j != count-1; j++){
numbers.shift(numbers[j]);
}
Мое решение. Не очень, но работает.
var numbers = [1, 3, 5, 7, 9, 11];
var swap = numbers.length - 1;
for ( var i = 0; i <= swap ; i++){
numbers.push(numbers[swap-i]);
console.log(numbers);
}
numbers.splice(0, swap+1)
console.log(numbers);