Удаление undefined и null из объекта с lodash в JS

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Функции lodash _.omitBy и _.isNil позволяют исключить из объекта все значения null и undefined:

JS
Скопировать код
const cleanObj = _.omitBy(obj, _.isNil);

Так, в cleanObj останутся только значимые данные вашего объекта.

Кинга Идем в IT: пошаговый план для смены профессии

Повышение точности с использованием функций omitBy и isNil

Функция _.omitBy формирует новый объект, исключая из него свойства, для которых предикат возвращает истинное значение. Предикат _.isNil в данном контексте устанавливает значения null и undefined, допуская их удаление без влияния на прочие ложные (falsey) значения, такие как false, 0, "" и NaN, которые в JavaScript интерпретируются как ложные.

Улучшение производительности с использованием ленивых вычислений

В ситуациях, когда обрабатывается большой объем данных или когда особенно важна производительность, ленивые вычисления могут оказаться полезным инструментом. Lodash позволяет применять вычисления по мере их необходимости, используя цепочки вызовов, что увеличивает эффективность обработки данных.

Другими словами, lodash не применяет все операции одновременно, а делает это по мере необходимости. Великолепная работа, lodash! 🐶

Ложные значения и их осмысление

_.isNil сфокусирован только на значениях null и undefined, оставляя прочие ложные значения, например, false, нетронутыми:

JS
Скопировать код
const result = _.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil);

// теперь result будет равен { b: 1, d: false } — false остался на своей позиции! 🥳

Особенности работы с вложенными объектами

Сложности могут возникнуть при работе со вложенными структурами. В этом случае вам будет полезно создание собственной рекурсивной функции, в которой можно прибегнуть к функционалу lodash:

JS
Скопировать код
function deepOmitBy(value, iteratee) {
  if (_.isObject(value)) {
    return _.transform(value, (result, val, key) => {
      if (!iteratee(val)) {
        result[key] = deepOmitBy(val, iteratee); // тут мы погружаемся на уровень глубже
      }
    });
  }
  return value;
}

const deeplyCleanObject = deepOmitBy(nestedObj, _.isNil);

Визуализация

Представьте _.omitBy как ситечко, которое отсеивает ненужное:

JS
Скопировать код
{
  cleanWater: '💧',
  mud: null,
  fish: '🐠',
  leaves: undefined,
  algae: '🌿'
}

Постаревшие носки с дырками выброшены. Старая футболка выброшена. С диетой всё сложнее, но…

JS
Скопировать код
_.omitBy(object, _.isNil); // начинаем "тренировку с весами" 💪

В итоге получаем следующее:

ДоПосле
{{
cleanWater: '💧',cleanWater: '💧',
mud: null,fish: '🐠',
fish: '🐠',algae: '🌿'
leaves: undefined,}
algae: '🌿'

Осталась только чистая вода, без шоколада... а, безусловно, и без null и undefined.

Удаление null и undefined: возможности lodash

Библиотека Lodash предоставляет вам эффективные инструменты для очистки данных. Использование методов этой библиотеки, таких как _.omitBy или _.pickBy, в сочетании с предикатом _.isNil, поможет вам избавиться от значений null и undefined, сохранив при этом значения, интерпретирующиеся как ложные.

Полезные материалы

  1. Документация Lodash — подробное руководство по использованию функции _.omitBy в Lodash.
  2. Документация Lodash — подробное руководство по функции _.pickBy в Lodash.
  3. Object.entries() – JavaScript | MDN — документация MDN о использовании Object.entries() в JavaScript.
  4. Array.prototype.filter() – JavaScript | MDN — руководство MDN относительно метода filter() для работы с массивами в JavaScript.
  5. javascript – How to remove undefined and null values from an object using lodash? – Stack Overflow — обсуждение на форуме Stack Overflow, отражающее данную тему.
  6. GitHub – lodash/lodash: Современная библиотека утилит для JavaScript, поддерживающая модульность, производительность и добавление дополнительных функций. — официальный репозиторий lodash на GitHub.