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