Use GROQ `select` to Set Values Based on Conditions

John Lindquist
InstructorJohn Lindquist
Share this video with your friends

Social Share Links

Send Tweet
Published 2 years ago
Updated 2 years ago

GROQ's select function works kind of like a JavaScript switch statement. You give it some conditions and a default and it will assign the first condition that passes to the new field you've created.

John Lindquist: [0:00] Let's add an age property to give us some more data to work with. I'm an old fart at 40 and we'll add in my son, who's a teenager at 15. We can easily set up a filter here. Inside of our array brackets, we can say, if age is less than 30, just grab all those people. That would only give back my son.

[0:23] Then, we get the query from last time, where his name is constructed from his first and his last name. We pluck off the name so that it's just an array of strings. It can be much more interesting to construct some additional data based on conditions. Inside of our object syntax here, we'll add a comma, just like JSON. We'll add a key here. We'll just call this group, and then use the SELECT function.

[0:50] SELECT is going to work on that age property. I'll just paste that back in. If age is less than 30, we can assign the group to the value of young, otherwise, we'll assign it to old.

[1:08] I'll go ahead and get rid of this name plucking so we can see the entire object. I'll run it again, and you can see we have me in a group of old and my son in a group of young. The SELECT function works like a switch statement, where we can add as many lines as we want here. The first match that it hits, it'll add that value to this key.

[1:30] If we put over 130, I could be super old, and then whatever other conditions based on age, or based on any of the values that we want to pass in there. I'm going to leave it with just the one condition and the default fallback, in case that condition isn't met.

[1:49] Then, from this, now that we have a group key, we could construct an entire sentence off of that. We could say, name + is + group, and then pluck that sentence off. We'll run this. You'll see we have two strings of, "John Lindquist is old," and, "Ben Lindquist is young," based on only this data set.

[2:13] At any time, you could come back and add more filtering, or more keys, or reconstruct the data in any way you want.

egghead
egghead
~ 16 minutes ago

Member comments are a way for members to communicate, interact, and ask questions about a lesson.

The instructor or someone from the community might respond to your question Here are a few basic guidelines to commenting on egghead.io

Be on-Topic

Comments are for discussing a lesson. If you're having a general issue with the website functionality, please contact us at support@egghead.io.

Avoid meta-discussion

  • This was great!
  • This was horrible!
  • I didn't like this because it didn't match my skill level.
  • +1 It will likely be deleted as spam.

Code Problems?

Should be accompanied by code! Codesandbox or Stackblitz provide a way to share code and discuss it in context

Details and Context

Vague question? Vague answer. Any details and context you can provide will lure more interesting answers!

Markdown supported.
Become a member to join the discussionEnroll Today