J'ai également rencontré ce scénario aujourd'hui, où je ne voulais pas que le zéro soit écrasé pour plusieurs valeurs. Nous avons un fichier avec quelques méthodes utilitaires communes pour des scénarios comme celui-ci. Voici ce que j'ai ajouté pour gérer le scénario et être flexible.
function getIfNotSet(value, newValue, overwriteNull, overwriteZero) {
if (typeof (value) === 'undefined') {
return newValue;
} else if (value === null && overwriteNull === true) {
return newValue;
} else if (value === 0 && overwriteZero === true) {
return newValue;
} else {
return value;
}
}
Il peut ensuite être appelé avec les deux derniers paramètres étant facultatifs si je veux seulement définir pour les valeurs indéfinies ou également écraser les valeurs nulles ou 0. Voici un exemple d'appel à cette fonction qui définira l'ID à -1 si l'ID est indéfini ou nul, mais n'écrasera pas une valeur 0.
data.ID = Util.getIfNotSet(data.ID, -1, true);