Удаление undefined и null из объекта с lodash в JS
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Функции lodash _.omitBy
и _.isNil
позволяют исключить из объекта все значения null
и undefined
:
const cleanObj = _.omitBy(obj, _.isNil);
Так, в cleanObj
останутся только значимые данные вашего объекта.
Повышение точности с использованием функций omitBy
и isNil
Функция _.omitBy
формирует новый объект, исключая из него свойства, для которых предикат возвращает истинное значение. Предикат _.isNil
в данном контексте устанавливает значения null
и undefined
, допуская их удаление без влияния на прочие ложные (falsey) значения, такие как false
, 0
, ""
и NaN
, которые в JavaScript интерпретируются как ложные.
Улучшение производительности с использованием ленивых вычислений
В ситуациях, когда обрабатывается большой объем данных или когда особенно важна производительность, ленивые вычисления могут оказаться полезным инструментом. Lodash позволяет применять вычисления по мере их необходимости, используя цепочки вызовов, что увеличивает эффективность обработки данных.
Другими словами, lodash не применяет все операции одновременно, а делает это по мере необходимости. Великолепная работа, lodash! 🐶
Ложные значения и их осмысление
_.isNil
сфокусирован только на значениях null
и undefined
, оставляя прочие ложные значения, например, false
, нетронутыми:
const result = _.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil);
// теперь result будет равен { b: 1, d: false } — false остался на своей позиции! 🥳
Особенности работы с вложенными объектами
Сложности могут возникнуть при работе со вложенными структурами. В этом случае вам будет полезно создание собственной рекурсивной функции, в которой можно прибегнуть к функционалу lodash:
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
как ситечко, которое отсеивает ненужное:
{
cleanWater: '💧',
mud: null,
fish: '🐠',
leaves: undefined,
algae: '🌿'
}
Постаревшие носки с дырками выброшены. Старая футболка выброшена. С диетой всё сложнее, но…
_.omitBy(object, _.isNil); // начинаем "тренировку с весами" 💪
В итоге получаем следующее:
До | После |
---|---|
{ | { |
cleanWater: '💧', | cleanWater: '💧', |
mud: null, | fish: '🐠', |
fish: '🐠', | algae: '🌿' |
leaves: undefined, | } |
algae: '🌿' |
Осталась только чистая вода, без шоколада... а, безусловно, и без null
и undefined
.
Удаление null и undefined: возможности lodash
Библиотека Lodash предоставляет вам эффективные инструменты для очистки данных. Использование методов этой библиотеки, таких как _.omitBy
или _.pickBy
, в сочетании с предикатом _.isNil
, поможет вам избавиться от значений null
и undefined
, сохранив при этом значения, интерпретирующиеся как ложные.
Полезные материалы
- Документация Lodash — подробное руководство по использованию функции
_.omitBy
в Lodash. - Документация Lodash — подробное руководство по функции
_.pickBy
в Lodash. - Object.entries() – JavaScript | MDN — документация MDN о использовании
Object.entries()
в JavaScript. - Array.prototype.filter() – JavaScript | MDN — руководство MDN относительно метода
filter()
для работы с массивами в JavaScript. - javascript – How to remove undefined and null values from an object using lodash? – Stack Overflow — обсуждение на форуме Stack Overflow, отражающее данную тему.
- GitHub – lodash/lodash: Современная библиотека утилит для JavaScript, поддерживающая модульность, производительность и добавление дополнительных функций. — официальный репозиторий lodash на GitHub.