Заменить empty элементы в массиве

Имеется массив:

a = [empty, data, data, empty, data]

Требуется заменить в этом массиве empty на []

Такой метод не работает

a = [2,3, empty ,4]
test = a.map(function(item) { 
    if(!item){
        return [];    
    }
    else {
        return item 
    }
 })
 // test = [2,3, empty ,4] после выполнения

Каким образом организовать проверку на empty в данном случае? (без использования сторонних библиотек)


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

Автор решения: OPTIMUS PRIME

map, forEach и прочие встроенные методы пропускают пустые элементы массива. При этом, если туда непосредственно было присвоено значение undefined - увидят его:

let arr = new Array(5);
arr[0] = undefined;

arr.map(e => console.log("map", e));

for (let i = 0; i < arr.length; i++) {
  console.log("for", arr[i]);
}

Используйте классический цикл:

let arr = [2, 3, , , "moo"];

for (let i = 0; i < arr.length; i++ ) {
  if (typeof arr[i] === "undefined") {
    arr[i] = [];
  }
}

console.log(arr);

→ Ссылка