Remova valores Falsy (ou strings vazias) de objetos JavaScript

Descrição

Este método itera sobre um objeto e remove todas as chaves com valores falsos.
Ou seja, valores falsos farão com que o par chave / valor seja removido do objeto. Isso é muito útil para remover dados indesejados de um objeto.

Consulte esta página para obter mais informações sobre valores falsos.

Observe que isso é uma passagem “superficial”, portanto, os valores falsos aninhados não serão removidos.

Código

// ES6 Syntax
const removeFalsy = (obj) => {
let newObj = {};
Object.keys(obj).forEach((prop) => {
if (obj[prop]) { newObj[prop] = obj[prop]; }
});
return newObj;
};

// Old syntax
var removeFalsy = function removeFalsy(obj) {
var newObj = {};
Object.keys(obj).forEach(function (prop) {
if (obj[prop]) {
newObj
[prop] = obj[prop];
}
});
return newObj;
};

Exemplo

var obj = {
key1
: 0,
key2
: "",
key3
: false,
key4
: "hello!",
key7
: { key8: "" }, // nested value won't be removed
};

console
.log(removeFalsy(obj)) // { key4: 'hello!', key7: { key8: '' } }

Modificações

Se você deseja apenas verificar strings vazias ou algo semelhante,
é fácil modificar o código.

const removeEmptyStrings = (obj) => {
let newObj = {};
Object.keys(obj).forEach((prop) => {
if (obj[prop] !== '') { newObj[prop] = obj[prop]; }
});
return newObj;
};

...

console
.log(removeEmptyStrings(obj))
// { key1: 0, key3: false, key4: 'hello!', key7: { key8: '' } }