J'ai un objet avec plusieurs propriétés. Je voudrais supprimer toutes les propriétés qui ont des valeurs erronées.
Cela peut être réalisé avec compact
sur les tableaux, mais qu'en est-il des objets ?
J'ai un objet avec plusieurs propriétés. Je voudrais supprimer toutes les propriétés qui ont des valeurs erronées.
Cela peut être réalisé avec compact
sur les tableaux, mais qu'en est-il des objets ?
Soudain, j'ai eu besoin de créer une fonction pour supprimer récursivement les falsificateurs. J'espère que cela vous aidera. J'utilise Lodash.
var removeFalsies = function (obj) {
return _.transform(obj, function (o, v, k) {
if (v && typeof v === 'object') {
o[k] = _.removeFalsies(v);
} else if (v) {
o[k] = v;
}
});
};
_.mixin({ 'removeFalsies': removeFalsies });
Alors vous pouvez l'utiliser :
var o = _.removeFalsies({
foo: 'bar',
a: 0,
b: false,
c: '',
d: null,
e: undefined,
obj: {
foo: 'bar',
a: 0,
b: false,
c: '',
d: null,
e: undefined
}
});
// {
// foo: 'bar',
// obj: {
// foo: 'bar'
// }
// }
Pour compléter la réponse de gion_13 :
_.mixin({
compactObject : function(o) {
var newObject = {};
_.each(o, function(v, k) {
if(v !== null && v !== undefined) {
newObject[k] = v
}
});
return newObject;
}
});
Celui-ci crée un nouvel objet et ajoute des clés et des valeurs au lieu de tout cloner et de supprimer les paires clé-valeur. Une différence mineure.
Mais surtout, il vérifie explicitement l'existence de null et d'undefined au lieu de falsey, qui supprimera les paires clé-valeur ayant false comme valeur.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.