Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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);
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2017, 10:40
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

function clearArrayFromUndefined(){
   var i = 0;
   do {
        if(array[i] === undefined) array.splice(i, 1);
        else i++;
    }   while (i < array.length);
}


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();
console.log(array);
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2017, 11:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

Evelate,
function clearArrayFromUndefined(arr){
                for (var j = 0; j < arr.length; ) {
                    var n = arr[j];
                    if (n === undefined) {
                        for (var k = j; k < arr.length-1; k++) {
                            arr[k] = arr[k+1];
                        }
                        arr.length--;
                    }
                    else j++
                }
    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);
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2017, 11:13
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Удаление с массива всего что начинается с ddd

только там вместо if (!/^dd/.test(arr[i])) надо написать if (arr[i] !==
undefined)
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2017, 15:23
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var arr =[5,5,undefined,6,77,6,4,undefined,57]
arr = arr.filter((el) => el !== undefined);
console.log(arr);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите к js коду, написать html код Modrih Элементы интерфейса 8 16.06.2015 18:08
Сортировка массива по возрастанию другого массива. vas88811 Events/DOM/Window 4 12.01.2014 10:31
удаление элемента массива и его длина Esigns Общие вопросы Javascript 3 17.07.2013 19:23
Создание многомерного массива из PHP ivandelov Общие вопросы Javascript 6 13.06.2012 21:01
Чем отличается undefined от null hrundel Общие вопросы Javascript 21 01.01.2011 22:06