Как удалить пустые элементы массива в javascript?

Пользователь

от richard , в категории: JavaScript , 2 года назад

Как удалить пустые элементы массива в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ottilie.farrell , год назад

@richard 

Вы можете удалить пустые элементы массива в JavaScript, используя функцию filter(). Эта функция принимает функцию обратного вызова, которая вызывается для каждого элемента массива, и возвращает новый массив, содержащий только те элементы, для которых функция обратного вызова вернула true.


Например, чтобы удалить все пустые строки из массива, вы можете использовать следующий код:

1
2
3
const array = ['foo', '', 'bar', '', 'baz'];
const nonEmpty = array.filter(str => str.length > 0);
// nonEmpty теперь содержит ['foo', 'bar', 'baz']


Если вы хотите удалить не только пустые строки, но и другие пустые значения (например, null, undefined или пустые объекты), вы можете использовать функцию Boolean() для преобразования значений в логические значения и фильтровать массив с помощью него:

1
2
const array = ['foo', null, 'bar', undefined, 'baz', {}];
const nonEmpty = array.filter(Boo


Пользователь

от josie , год назад

@richard 

В JavaScript есть несколько способов удаления пустых элементов из массива.

  1. Используйте метод filter() для создания нового массива без пустых элементов:
1
2
const arr = [1, , 3, , 5];
const filteredArr = arr.filter(Boolean); // [1, 3, 5]


Здесь Boolean является функцией, которая преобразует значение в булево значение (true или false). Если элемент равен undefined, null, 0, NaN или '' (пустая строка), то он будет преобразован в false и удален из нового массива.

  1. Используйте цикл for для удаления пустых элементов из оригинального массива:
1
2
3
4
5
6
7
const arr = [1, , 3, , 5];
for (let i = 0; i < arr.length; i++) {
  if (arr[i] === undefined) {
    arr.splice(i, 1);
    i--;
  }
}


Здесь мы проходим по каждому элементу массива и проверяем, равен ли он undefined. Если да, то мы используем метод splice() для удаления этого элемента из массива, а затем уменьшаем переменную i, чтобы не пропустить следующий элемент после удаления.

  1. Используйте метод reduce() для создания нового массива без пустых элементов:
1
2
3
4
5
6
7
const arr = [1, , 3, , 5];
const reducedArr = arr.reduce((acc, val) => {
  if (val !== undefined) {
    acc.push(val);
  }
  return acc;
}, []); // [1, 3, 5]


Здесь мы используем метод reduce() для прохода по каждому элементу массива и добавления его в новый массив, если он не равен undefined. Мы начинаем с пустого массива ([]) и добавляем каждый элемент с помощью метода push().