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: '' } }