Персональный блог Игоря Антонова aka "spider_net"

Быстрый способ удалить элементы null и undefined из массива в JavaScript


Рубрика: JavaScript -> Программирование
Метки: | |
Просмотров: 3861
Быстрый способ удалить элементы null и undefined из массива в JavaScript

Читал тут на днях одну интересную статью по JavaScript и заметил, что автор публикации использует неоптимальный способ удаления элементов undefined, null из массива. Он делал так: определял новый массив, затем запускал цикл по массиву, который требуется очистить и в теле цикла выполнял соответствующую проверку, результат которой определял дальнейшую судьбу очередного элемента.

Способ вполне имеет право на жизнь, но ведь можно сделать немного проще. Быть может выигрыш в приросте скорости будет не сильно большим, но сэкономить место в коде удастся однозначно. Предложенное ниже решение проигрывает по производительности (спасибо, Михаилу за комментарий и ссылку) традиционному способу, поэтому не стоит его применять на больших массивах.

Итак, теперь попробуем удалить элементы null и undefined из массива без лишних заморочек:

//Подготовим массив для тестирования
var myArray = [1111, 5, 3, 4, null, undefined, 4, 5, null, 5];
//Удаляем  все элементы, равные undefined и null
myArray = myArray.filter(function(x) {
    return x !== undefined && x !== null; 
});
console.log(myArray.toString()); //1111,5,3,4,4,5,5

Итого, для удаления потребовалось всего лишь две строчки кода. Можно записать и в одну, но в две явно наглядней. Напомню, что с помощью метода filter() удобно отбирать элементы массива. В качестве параметра методу требуется передать функцию-предикат (т.е. она должна возвращать true или false). Дальше все просто. Если функция возвращает true, то элемент удовлетворяет условию и добавляется в массив, который будет возвращен в качестве результата метода filter().

Оставьте комментарий!
comments powered by HyperComments