JavaScript

Как только с конца массива обрезать все пустые элементы? var arr = [0,,2,,,];

[...arr].reduceRight((acc, value) => !acc.stop && !value? acc : ({ stop: true, values: [value, ..acc.values] }), { stop: false, values: [] }).values;
Урал Бердалиев
Урал Бердалиев
5 745
Лучший ответ
Алпамыс Абильдаев Только с конца.
Какая разница с конца или не с конца?
var arr1 = [3,'8','',6,'','',5];
console.log(arr1);
var arr2 = arr1.filter(function(elem) {
return elem != ''
});
console.log(arr2)
>>>
Array(7) [ 3, "8", "", 6, "", "", 5 ]
Array(4) [ 3, "8", 6, 5 ]
Тоже без ГМО ))))

var arr = [0,,2,,,];

for( var i = arr.length - 1; i >= 0; i-- ){
  if( arr[i] !== undefined ){ break; }
  arr.pop();
}

P.s. но в массиве и не должно быть пустых элементов. Его смысл как-раз в том, чтобы это был удобный пронумерованный список. Иначе - можно использовать обычный объект.
Алексей Миги
Алексей Миги
62 360
Сералы Абдиев ток щас вспомнил про эти 4 метода, как вариант
как вариант без всяких ГМО и скрытых итераторов

var i = arr.length - 1;
var arr2 = Array();
for (; i >= 0; i--) if (arr[i] !== undefined) break;
for (; i >= 0; i--) arr2[i] = arr[i];
if (arr2.length > 0) arr = arr2; arr2 = undefined;
Алексей Миги >> Cannot set property '4' of undefined
Алпамыс Абильдаев Да, там немного сложнова то (^_^)'
Алгоритм.
1. Пройтись циклом по всему массива.
2. Сравнить текущий элемент со значением undefined
т. к. пустые элементы в JS дают undefined.
3. При помощи метода splice объекта Array удалить пустой элемент.
Где i это текущий порядковый номер элемента в массиве, который нужно удалить.
1 это количество элементов которых нужно удалить.
В нашем случае удаляем по 1 элементу.
4. Конец можно радоваться и заварить себе роллтон.

Алгоритм не самый лучший т. к. он удаляет по 1 элементу.
Урал Бердалиев а вы проверяли код для arr = [0,,2,,,]? ради эксперимента, просто поставьте console.log() в if ()