Показать сообщение отдельно
  #1 (permalink)  
Старый 20.07.2017, 10:10
Интересующийся
Отправить личное сообщение для Evelate Посмотреть профиль Найти все сообщения от Evelate
 
Регистрация: 10.03.2017
Сообщений: 12

чистка массива от undefined со смещением
Цель: проверить все элементы массива, если встречается "undefined", например array[3], то все последующие элементы должны переместиться на одну позицию влево, независимо, будут ли еще встречаться "undefined" и так по кругу, пока все элементы не будут числами, строками и т.п.

Но что-то идет не так... повторная проверка не даёт результатов, а нынешний код не работает так, как нужно.

Как мне исправить и может есть более лучшее решение?)




function clearArrayFromUndefined(arr){

    if (arr[0] !== undefined) {    //проверка на пустой массив

                for (var j = 0; j < arr.length; j++) {    //перебор свойств массива
                    var n = arr[j];
                    if (n === undefined) {
                        for (var k = (j + 1); k < arr.length; k++) {
                            arr[k - 1] = arr[k];
                            delete arr[k];


/*
                            for(var x = 0; x < arr.length; x++){     //повторный запуск проверки массива на undefined
                                if (arr[x] === undefined){
                                    j = x;
                                }
                            }
*/

                        }
                    }
                }



    }
    return arr;
}


var array = [];

array[0] = 0;
array[1] = 1;

array[3] = 3;

array[5] = 5;
array[8] = 8;
array[15] = 15;
array[20] = 20;
//array[50] = 50;

console.log(array);
clearArrayFromUndefined(array);
console.log(array);
Ответить с цитированием