не получается обменять элементы массива местами, при определенных обстоятельствах

есть код: `

let arr1 = [24,17];

for(let i = 0; i<arr1.length; i++) {
        let arr = [arr[i]];
        arr1[i] = arr;
    }
    document.write(arr1 +  "<br/>");
    for(let i = 0, j = 0; i<=(arr1/2 - 1); i++, j++) {
        if(arr1[i][0] > arr1[i+1][0]) {
            let arr_new = [arr1[i+1][0],arr1[i][0]];
            arr1[j] = arr_new;
            arr1.splice(i+1,1);
        } else if(arr1[i][0] < arr1[i+1][0]) {
            let arr_new = [arr1[i][0],arr1[i+1][0]]; //[ [[24],[17]], ]
            arr1[j] = arr_new;
            arr1.splice(i+1,1);
        }
    }

    document.write(arr1);

эта часть:

        for(let i = 0; i<arr1.length; i++) {
        let arr = []; 
        arr[0] = arr1[i];
        arr1[i] = arr;
}

заполняет каждый элемент массива arr1 массивами, но просто с тем значениями, которые были у него сначала. То есть если был arr1 === [5,9], то должен получиться arr1 === [[5],[9]]

  1. данный код:

        for(let i = 0, j = 0; i<=(arr1/2 - 1); i++, j++) {
              if(arr1[i][0] > arr1[i+1][0]) {
                 let arr_new = [arr1[i+1][0],arr1[i][0]];
                 arr1[j] = arr_new;
                 arr1.splice(i+1,1);
           } else if(arr1[i][0] < arr1[i+1][0]) {
              let arr_new = [arr1[i][0],arr1[i+1][0]];
              arr1[j] = arr_new;
              arr1.splice(i+1,1);
           }
        }

должен, по идее, сравнивать значения элементов массивов (то есть массивы из одного элемента) попарно, и если один из элементов массива arr1 является большим, чем другой, то они должны объединиться вместе в одном массиве let arr_new = [arr1[i+1][0],arr1[i][0]];, при этом меняясь местами. Далее, мы удаляем следующий элемент массива arr1 - arr1.splice(i+1,1), если i == 0, то удалиться должен элемент со значением 17, то есть с индексом 1. В итоге мы должны получить arr1 === [[[17],[24]]];, но получается лишь так, что элемент с индексом 0 равен 24, а с индексом 1 равен 17. Я ожидал другого результата, а именно, что они поменяются местами.


Ответы (1 шт):

Автор решения: Igor

В Вашем коде есть опечатки. Например, вот здесь

let arr = [arr[i]];

arr[i] откуда возьмется?

Вот это (arr1/2 - 1) в условии цикла, как Вы думаете, чему равно?

Зачем в цикле нужна переменная j? Она же все время равна i.

Сделайте в вопросе работающий пример, воспроизводящий то, что Вы наблюдаете.

→ Ссылка