4 votes

ES6 Javascript Shorthand créer une propriété seulement si elle est vraie

Disons que j'ai

const {status} = req.body;

Je souhaite inclure statut dans mon objet de requête seulement si le statut a une valeur vraie (autre que null o undefined o chaîne vide ),

C'est ce que je fais actuellement,

const query = {
   otherCondition: 1,
};

if (status) {
  query.status = status;
}

Existe-t-il un moyen d'éviter cela en utilisant la clause if en utilisant la sténographie ES6 Object ?

Si j'utilise,

const query = {
   otherCondition: 1,
   status,
}

Lorsque l'état est undefined il génère

{
   otherCondition: 1,
   status: "undefined",
}

7voto

Ori Drori Points 65611

Vous pouvez utiliser propagation de l'objet con évaluation des courts-circuits :

...status && { status }

Si status est une valeur falsy, l'expression évaluée ne "renverra" pas d'objet, et le spread l'ignorera. S'il s'agit d'une valeur de confiance, le circuit court "renverra" l'objet { status } et la diffusion fonctionnera normalement :

Falsy

const {status} = {};

const query = {
   otherCondition: 1,
   ...status && { status }
};

console.log(query);

Truthy

const {status} = { status: 5 };

const query = {
   otherCondition: 1,
   ...status && { status }
};

console.log(query);

0voto

Lekens Points 633
const status = null;
{
   otherCondition: 1,
   status: (status) ? status: false,
}

ce qui renverra

{
   otherCondition: 1,
   status: false,
}

Prograide.com

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.

Powered by:

X