чистка массива от 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); |
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); |
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); |
http://javascript.ru/forum/misc/6854...tml#post450880
только там вместо if (!/^dd/.test(arr[i])) надо написать if (arr[i] !== undefined) |
var arr =[5,5,undefined,6,77,6,4,undefined,57] arr = arr.filter((el) => el !== undefined); console.log(arr); |
Часовой пояс GMT +3, время: 23:34. |