Skip to content

Instantly share code, notes, and snippets.

@pangeaware
Created January 22, 2021 20:35
Show Gist options
  • Save pangeaware/0260f35e9643835497bf40c2fee59719 to your computer and use it in GitHub Desktop.
Save pangeaware/0260f35e9643835497bf40c2fee59719 to your computer and use it in GitHub Desktop.
Partial solution to menu item options
const data = {"itemHeader":{"id":"208561505","name":"1/2 Bistro Steak Sandwich","imgUrl":"","description":"carved steak with dijonnaise, basil pesto, caramelized onion jam, roasted tomatoes, arugula, lemon squeeze (250 cal) on toasted sesame roll (150 cal)\r\n\r\ncan be requested gluten free by selecting the gf bread option\r\n\r\nPlease note: we are now offering two different deli sizes with your half sandwich. Looking to get the same deli size you've always gotten? Make sure to select the medium size","displayString":"","unitAmount":0,"currency":"USD","decimalPlaces":2,"specialInstructionsMaxLength":0,"__typename":"ItemHeader"},"optionLists":[{"type":"extra_option","id":"416748856","name":"Choose the size of your side","subtitle":"Select 1","selectionNode":"singe_select","minNumOptions":1,"maxNumOptions":1,"minAggregateOptionsQuantity":null,"maxAggregateOptionsQuantity":null,"minOptionChoiceQuantity":null,"maxOptionChoiceQuantity":null,"numFreeOptions":0,"isOptional":false,"options":[{"id":"2332496096","name":"Medium Deli Side or Soup","unitAmount":1226,"currency":"USD","displayString":"+$12.26","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5NjA5Niwic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption","optionLists":[{"type":"extra_option","id":"416748897","name":"chef's recommended bread","subtitle":"Select 1","selectionNode":"single_select","minNumOptions":1,"maxNumOptions":1,"minAggregateOptionsQuantity":null,"maxAggregateOptionsQuantity":null,"minOptionChoiceQuantity":null,"maxOptionChoiceQuantity":null,"numFreeOptions":0,"isOptional":false,"options":[{"id":"2332496975","name":"Toasted Sesame Roll","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332496153","name":"Change Chef's Recommended Bread","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5NjE1Mywic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption"}],"flattenedDefaultNodes":[{"__typename":"DefaultOption","parentId":"416748897","id":"2332496975","name":"Toasted Sesame Roll","nextCursor":null,"displayString":"","unitAmount":0,"currency":"USD","decimalPlaces":2,"selectedQuantity":null}],"__typename":"OptionList"},{"type":"extra_option","id":"416749090","name":"change it up","subtitle":"Select up to 10","selectionNode":"multi_select","minNumOptions":0,"maxNumOptions":99,"minAggregateOptionsQuantity":null,"maxAggregateOptionsQuantity":null,"minOptionChoiceQuantity":null,"maxOptionChoiceQuantity":null,"numFreeOptions":0,"isOptional":true,"options":[{"id":"2332497115","name":"No Dijonnaise","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497127","name":"Lite Dijonnaise","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497088","name":"Dijonnaise (On the Side)","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497041","name":"No Basil Pesto","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497143","name":"Lite Basil Pesto","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497139","name":"Basil Pesto (On the Side)","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497057","name":"No Caramelized Onion Jam","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497019","name":"No Roasted Tomatoes","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497074","name":"No Arugula","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497102","name":"No Lemon Squeeze","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"}],"flattenedDefaultNodes":[],"__typename":"OptionList"},{"type":"extra_option","id":"416749115","name":"choose your side","subtitle":"Select 1","selectionNode":"single_select","minNumOptions":1,"maxNumOptions":1,"minAggregateOptionsQuantity":null,"maxAggregateOptionsQuantity":null,"minOptionChoiceQuantity":null,"maxOptionChoiceQuantity":null,"numFreeOptions":0,"isOptional":false,"options":[{"id":"2332497174","name":"Deli Side","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5NzE3NCwic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption","optionLists":[{"type":"extra_option","id":"416749118","name":"Choose your medium side:","subtitle":"Select 1","selectionNode":"single_select","minNumOptions":1,"maxNumOptions":1,"minAggregateOptionsQuantity":null,"maxAggregateOptionsQuantity":null,"minOptionChoiceQuantity":null,"maxOptionChoiceQuantity":null,"numFreeOptions":0,"isOptional":false,"options":[{"id":"2332497214","name":"Spicy Curried Couscous","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497222","name":"Marinated Red Beets & Quinoa","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497265","name":"Basil Pesto Shells","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497273","name":"Spicy Dijon Potato Salad","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497253","name":"Power Lunch Side Salad","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"},{"id":"2332497278","name":"Wild Rice Salad with Butternut Squash and Apples","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":null,"__typename":"FeedOption"}],"flattenedDefaultNodes":[],"__typename":"OptionList"}]},{"id":"2332497286","name":"Soup","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5NzI4Niwic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption"}],"flattenedDefaultNodes":[],"__typename":"OptionList"},{"type":"extra_option","id":"416749155","name":"add some happy","subtitle":"Select up to 2","selectionNode":"multi_select","minNumOptions":0,"maxNumOptions":99,"minAggregateOptionsQuantity":null,"maxAggregateOptionsQuantity":null,"minOptionChoiceQuantity":null,"maxOptionChoiceQuantity":null,"numFreeOptions":0,"isOptional":true,"options":[{"id":"2332497365","name":"Beverages","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5NzM2NSwic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption"},{"id":"2332497605","name":"Chips & Cookies","unitAmount":0,"currency":"USD","displayString":"","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5NzYwNSwic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption"}],"flattenedDefaultNodes":[],"__typename":"OptionList"}]},{"id":"2332497857","name":"Small Deli Side","unitAmount":1114,"currency":"USD","displayString":"+$11.14","decimalPlaces":2,"nextCursor":"eyJkbV9pZCI6Im9wdGlvbl9saXN0XzEiLCJkbV90eXBlIjoib3B0aW9uX2xpc3QiLCJkbV92ZXJzaW9uIjoxLCJjdXJzb3JfdmVyc2lvbiI6IklURU1fT1BUSU9OIiwiaXRlbUlkIjpudWxsLCJvcHRpb25JZCI6MjMzMjQ5Nzg1Nywic3RvcmVJZCI6MjcwOTksInNlbGVjdGVkT3JkZXJJdGVtSWQiOm51bGx9","__typename":"FeedOption"}],"flattenedDefaultNodes":[],"__typename":"OptionList"}],"itemType":"HAS_NESTED_OPTIONS","__typename":"ItemPage"};
let items = []
const getItems = (input) => {
if (typeof input === "object" && input !== null) {
Object.keys(input).forEach((key) => {
if (key === 'isOptional' && input[key] == false) {
if (input.options && input.options.length > 0) {
items.push(input.options[0].id);
}
return items;
}
if (typeof input[key] === "object" && input[key] !== null) {
getItems(input[key]);
}
});
}
return items;
};
const result = getItems(data.optionLists);
console.log(result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment