Jak odstraním všechny atributy, které jsou undefined
nebo null
v objektu JavaScript?
(Otázka je podobná té pro pole)
Odpověď
Můžete procházet objektem:
var test = { test1: null, test2: 'somestring', test3: 3, } function clean(obj) { for (var propName in obj) { if (obj[propName] === null || obj[propName] === undefined) { delete obj[propName]; } } return obj } console.log(test); console.log(clean(test));
Pokud se obáváte, že toto odstranění vlastnosti nespustí řetězec vlastností objektu, můžete také:
function clean(obj) { var propNames = Object.getOwnPropertyNames(obj); for (var i = 0; i < propNames.length; i++) { var propName = propNames[i]; if (obj[propName] === null || obj[propName] === undefined) { delete obj[propName]; } } }
Několik poznámek k null vs undefined:
test.test1 === null; // true test.test1 == null; // true test.notaprop === null; // false test.notaprop == null; // true test.notaprop === undefined; // true test.notaprop == undefined; // true