links: [[JS MOC]] --- # How to build an object conditionally? Let's consider a scenario where you want to search the github issues. In order to that whenever you choose a option that will be reflected as query params in the url something like this `https://github.com/react-native-clipboard/clipboard/issues?q=is_open=true&is_issue=true&label=bug` One way is ```js let queryParams = {} if(isOpen) { queryParams["is_open"] = isOpen } if(is_issue) { queryParams["is_issue"] = isIssue } if(label) { queryParams["label"] = label } ``` This way you can build the object for query params. What if you can build it with less code using conditional object spread ```js let queryParams = { ...(isOpen && {"is_open": isOpen}), ...(isIssue && {"is_issue": isIssue}), ...(label && {"label": label}) } ``` The gist of it is ```js const x = { ...(true && {name: 'chakri'}), ...(false && {age: 26}) } console.log(x) // {name: "chakri"} ``` The truthy values get spread to the object and falsy values are ignored # Fun fact ```js console.log({...(null)}) // {} console.log({...(undefined)}) // {} console.log({...(2)}) // {} console.log({...('hello')}) // {0: "h", 1: "e", 2: "l", 3: "l", 4: "o"} ``` --- tags: #javascript , #object