web-dev-qa-db-fra.com

Ajouter une propriété à un objet lorsqu'il n'est pas nul

Je travaille sur une petite API et je souhaite mettre à jour les données à l'aide de HTTP PATCH REQUEST sans utiliser un tas d'instructions if. J'essaie de remplir l'objet de données sortant uniquement avec les données modifiées.

update() {
    let prop1 = hasBeenChanged.prop1 ? changedData.prop1 : null;
    // ...
    let propN = hasBeenChanged.propN ? changedData.propN : null;

    let data: ISomething = {
        // something like --> property != null ? property: property.value : nothing
    }
}

Existe-t-il un moyen de créer dynamiquement l'objet de données?

12
Dawid Zbiński

Vous pouvez utiliser Object.assign:

let data = Object.assign({},
  first === null ? null || {first},
  ...
);

Cela fonctionne parce que Object.assign sautera les paramètres null.

Si vous êtes sûr que la valeur de la propriété ne sera pas "fausse", alors il serait un peu plus court d'écrire:

let data = Object.assign({},
  first && {first},
  ...
);

En supposant que l'objet va être stringifié à un moment donné, puisque la stringification ignore les valeurs non définies, vous pouvez également essayer

let data = {
  first: first === null ? undefined : first,
  ...
}
7
user663031