{"id":90035,"date":"2022-05-27T08:03:19","date_gmt":"2022-05-27T08:03:19","guid":{"rendered":"https:\/\/www.headout.com\/blog\/?p=90035"},"modified":"2023-08-10T21:06:56","modified_gmt":"2023-08-10T17:06:56","slug":"best-broadway-shows-in-may","status":"publish","type":"post","link":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/","title":{"rendered":"Best Broadway shows in May, a New York theatre guide"},"content":{"rendered":"<p>Here&#8217;s a quick taste of which Broadway shows have raised the curtain this May. Choose your pick and grab tickets before they sell out. The best Broadway shows in May are waiting for you! <\/p>\n<h2>Best Broadway Shows in May<\/h2>\n<p>[tcb-script src=&#8221;https:\/\/cdn.jsdelivr.net\/npm\/dayjs@1.10.7\/dayjs.min.js&#8221;][\/tcb-script][tcb-script src=&#8221;https:\/\/unpkg.com\/dayjs@1.8.21\/plugin\/isSameOrAfter.js&#8221;][\/tcb-script][tcb-script src=&#8221;https:\/\/unpkg.com\/dayjs@1.8.21\/plugin\/isSameOrBefore.js&#8221;][\/tcb-script]        [tcb-script]    dayjs.extend(window.dayjs_plugin_isSameOrAfter);    dayjs.extend(window.dayjs_plugin_isSameOrBefore);      const getTGIDListForMonth = (allTours,displayMonth) =&gt; {      const allToursArray = Object.values(allTours);      const startMonthDate = dayjs(        `${displayMonth}\/01\/${dayjs().year()}`,        &#8220;MMMM\/DD\/YYYY&#8221;      );      const endMonthDate = startMonthDate.add(        startMonthDate.daysInMonth() &#8211; 1,        &#8220;days&#8221;      );      const startMonthNextYearDate = startMonthDate.add(1,&#8221;years&#8221;);      const endMonthNextYearDate = endMonthDate.add(1,&#8221;years&#8221;);        return allToursArray.reduce((accumulator,element) =&gt; {        const endTourDate = dayjs(element[&#8220;Closing Date&#8221;],&#8221;YYYY-MM-DD&#8221;);        const startTourDate = dayjs(element[&#8220;Opening Date&#8221;],&#8221;YYYY-MM-DD&#8221;);        if (          compareDates(            startMonthDate,            endMonthDate,            startTourDate,            endTourDate          ) ||          compareDates(            startMonthNextYearDate,            endMonthNextYearDate,            startTourDate,            endTourDate          )        ) {          return [&#8230;accumulator,element[&#8220;id&#8221;]];        }        return accumulator;      },[]);    };  [\/tcb-script]  [tcb-script]      document.addEventListener(&#8220;DOMContentLoaded&#8221;,function (event) {          \/\/ Listicle Entry Animation          let slideInShows = function (animEleClass,animationClass) {              jQuery(&#8220;.show-wrapper .accBody:visible&#8221;).slideToggle(&#8220;slow&#8221;);              jQuery(&#8220;.show-wrapper .invert&#8221;).removeClass(&#8220;invert&#8221;);              jQuery(&#8220;.show-wrapper&#8221;)                  .removeClass(animationClass)                  .fadeOut()                  .finish()                  .promise()                  .done(function () {                      jQuery(&#8220;.&#8221; + animEleClass).each(function (i) {                          jQuery(this)                              .addClass(animationClass)                              .removeClass(animEleClass)                              .delay((i + 1) * 100)                              .fadeIn();                      });                  });          };            \/\/ Loads All Listed Products as in Months Tab          let showTab = function (tabId) {              showTgids = [];              jQuery(&#8220;.show-wrapper&#8221;).removeClass(&#8220;tabbed&#8221;);              jQuery(&#8220;[data-infotab]&#8221;).removeClass(&#8220;active&#8221;);              jQuery(&#8216;[data-infotab=&#8221;broadway musicals&#8221;]&#8217;).addClass(&#8220;active&#8221;);              if (tabId == 0) {                  jQuery(&#8220;.show-wrapper&#8221;).addClass(&#8220;prepare tabbed&#8221;);              } else if (typeof tabId === &#8220;string&#8221;) showTgids = tabId?.split(&#8220;,&#8221;);              else showTgids.push(tabId);              for (let i = 0; i &lt; showTgids.length; i++)                  jQuery(                      &#8220;.show-wrapper[data-tgid=&#8221; + parseInt(showTgids[i]) + &#8220;]&#8221;                  ).addClass(&#8220;tabbed prepare&#8221;);              slideInShows(&#8220;prepare&#8221;,&#8221;active&#8221;);          };            const msToTime = (duration) =&gt; {              let milliseconds = parseInt((duration % 1000) \/ 100),                  seconds = Math.floor((duration \/ 1000) % 60),                  minutes = Math.floor((duration \/ (1000 * 60)) % 60),                  hours = Math.floor((duration \/ (1000 * 60 * 60)) % 24);                return hours + &#8221; hrs &#8221; + minutes + &#8221; mins&#8221;;          };            \/\/ HTML Stars Generation          let getStars = function (rating) {              rating = rating &lt; 0 ? 0 : rating;              if (rating &lt; 0.25) return;              let round = Math.floor(rating);              let full = rating &gt; round + 0.5 ? true : false;              let half = rating &gt; round + 0.25 ? true : false;              let template = &#8220;&#8221;;              let i;              \/\/ Populate Complete Stars              for (i = 0; i &lt; round &amp;&amp; i &lt; 5; i++) {                  template += &#8220;&lt;span class=&#8217;fas fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;              }              \/\/ Add Partial Star (for floating ratings)              if (full &amp;&amp; i &lt; 5 &amp;&amp; ++i) template += &#8220;&lt;span class=&#8217;fas fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;              else if (half &amp;&amp; i &lt; 5 &amp;&amp; ++i)                  template += &#8220;&lt;span class=&#8217;fas fa-star-half-alt&#8217;&gt;&lt;\/span&gt;&#8221;;              \/\/ Populate Remaining With Empty Stars              while (i++ &lt; 5) template += &#8220;&lt;span class=&#8217;far fa-star&#8217;&gt;&lt;\/span&gt;&#8221;;              return template;          };            const getMicroBrandsHighlightsData = (microBrandsHighlight) =&gt; {              const result = {                  &#8220;Opening Date&#8221;: &#8220;&#8221;,                  &#8220;Closing Date&#8221;: &#8220;&#8221;,                  &#8220;Blog Summary&#8221;: &#8220;&#8221;,                  &#8220;Seating Plan&#8221;: null,                  &#8220;Read More&#8221;: &#8220;&#8221;,                  &#8220;Theatre Name&#8221;: null,                  &#8220;Getting There&#8221;: null,              };              let currentObject = &#8220;&#8221;;                microBrandsHighlight.forEach((element) =&gt; {                  if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Opening Date&#8221;                  ) {                      currentObject = &#8220;Opening Date&#8221;;                  } else if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Closing Date&#8221;                  ) {                      currentObject = &#8220;Closing Date&#8221;;                  } else if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Blog Summary&#8221;                  ) {                      currentObject = &#8220;Blog Summary&#8221;;                  } else if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Blog Theatre Seating Plan&#8221;                  ) {                      currentObject = &#8220;Seating Plan&#8221;;                  } else if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Blog Show Page&#8221;                  ) {                      currentObject = &#8220;Read More&#8221;;                  } else if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Theatre Name&#8221;                  ) {                      currentObject = &#8220;Theatre Name&#8221;;                  } else if (                      element.type == &#8220;heading6&#8221; &amp;&amp;                      element.content.text == &#8220;Getting There Map Link&#8221;                  ) {                      currentObject = &#8220;Getting There&#8221;;                  } else {                      if (currentObject == &#8220;Opening Date&#8221;) {                          result[&#8220;Opening Date&#8221;] = element.content.text;                      } else if (currentObject == &#8220;Closing Date&#8221;) {                          result[&#8220;Closing Date&#8221;] = element.content.text;                      } else if (currentObject == &#8220;Blog Summary&#8221;) {                          result[&#8220;Blog Summary&#8221;] = element.content.text;                      } else if (currentObject == &#8220;Seating Plan&#8221;) {                          result[&#8220;Seating Plan&#8221;] = element.content.text;                      } else if (currentObject == &#8220;Read More&#8221;) {                          result[&#8220;Read More&#8221;] = element.content.spans?.[0]?.data.url;                      } else if (currentObject == &#8220;Theatre Name&#8221;) {                          result[&#8220;Theatre Name&#8221;] = element.content.text;                      } else if (currentObject == &#8220;Getting There&#8221;) {                          result[&#8220;Getting There&#8221;] = element.content.text;                      }                      currentObject = &#8220;&#8221;;                  }              });                return result;          };            const monthSubCategoryFilter = jQuery(&#8220;.month-sub-category-filter&#8221;);          const filterEnabled = monthSubCategoryFilter.data(&#8220;filter-enabled&#8221;) === 1;          const categoryNameMap = {};          const filterHeading = monthSubCategoryFilter?.[0].getAttribute(              &#8220;data-filter-heading&#8221;          );          const subCategoryIds = monthSubCategoryFilter?.[0]              .getAttribute(&#8220;data-sub-category-ids&#8221;)              ?.split(&#8220;,&#8221;);          const monthCSV = monthSubCategoryFilter?.[0]              ?.getAttribute(&#8220;data-months&#8221;)              ?.split(&#8220;,&#8221;)?.filter(d =&gt; d !== &#8221;);          const firstMonth = monthCSV?.[0];          let allTours = [];            const functionsAfterDataUpdate = () =&gt; {              allTours.forEach((tour,index) =&gt; {                  if(tour.listingPrice){                  const showBody = tour[&#8220;Blog Summary&#8221;] || tour.shortSummary;                  const opening = getMicroBrandsHighlightsData(tour.microBrandsHighlight)[&#8220;Opening Date&#8221;];                  const tourImageUrl = `${tour.imageUrl                      }?auto=compress&amp;w=500&amp;h=250&amp;crop=faces&amp;fit=min`                  const mainCard = `&lt;div data-rating=&#8221;${tour.averageRating}&#8221; data-tgid=&#8221;${tour.id}&#8221; data-open=&#8221;${opening}&#8221;&gt;                                    &lt;div data-id=&#8221;${index}&#8221;&gt;                                      &lt;div&gt;                                          &lt;div&gt;                                              &lt;div&gt;                                                  &lt;picture&gt;                                                      &lt;source type=&#8221;image\/webp&#8221; data-srcset=&#8221;${tourImageUrl}&amp;fm=webp&#8221;&gt;                                                      &lt;img data-src=&#8221;${tourImageUrl}&amp;fm=pjpg&#8221; data-sizes=&#8221;auto&#8221; data-cover-image=&#8221;&#8221; alt=${tour.name}&#8221; title=&#8221;${tour.name}&#8221;&gt;                                                  &lt;\/picture&gt;                                                  &lt;div div&gt;${tour.name}&lt;\/div&gt;                                                  &lt;div&gt;                                                  ${tour.tags.map((item) =&gt; `&lt;div data-cat=&#8221;${item}&#8221;&gt;${categoryNameMap[item]}&lt;\/div&gt;`).join(&#8221; &#8220;)}                                                  &lt;\/div&gt;                                                  &lt;div data-show-ratings=&#8221;${tour.averageRating}&#8221;&gt;&lt;\/div&gt;                                                  &lt;div&gt;${showBody ? `&lt;span&gt;&lt;\/span&gt;` : &#8220;&#8221;}&lt;\/div&gt;                                                  &lt;div&gt;                                                      &lt;span&gt;                                                          &lt;span&gt;from&lt;\/span&gt;                                                          &lt;span&gt;$${tour.listingPrice ? tour.listingPrice.finalPrice : &#8220;&#8221;}&lt;\/span&gt;                                                      &lt;\/span&gt;                                                  &lt;\/div&gt;                                                  &lt;div&gt;&lt;\/div&gt;                                                  &lt;div&gt;&lt;\/div&gt;                                              &lt;\/div&gt;                                          &lt;\/div&gt;                                      &lt;\/div&gt;                                    &lt;\/div&gt;                  `;                    const htmlObject = `                                  ${showBody ? mainCard : `&lt;a href=&#8221;https:\/\/www.headout.com\/tour\/${tour.id}&#8221; target=&#8221;_blank&#8221; style=&#8221;text-decoration: none;&#8221;&gt;${mainCard}&lt;\/a&gt;`}                                  ${showBody ?                          `&lt;div data-id=&#8221;${index}&#8221;&gt;                                          &lt;div&gt;                                              &lt;div&gt;                                              &lt;div&gt;                                                  &lt;div&gt;                                                      ${tour.microBrandsDescriptor?.split(&#8220;rn&#8221;)?.map((item) =&gt; (`&lt;div&gt;${item?.trim()}&lt;\/div&gt;`)).join(&#8221; &#8220;)}                                                  &lt;\/div&gt;                                                  &lt;div&gt;                                                     &lt;div&gt;&lt;span&gt;Duration:&lt;\/span&gt; ${msToTime(tour.maxDuration)}&lt;\/div&gt;                                                  &lt;\/div&gt;                                              &lt;\/div&gt;                                              &lt;div&gt;                                                  ${tour[&#8220;Blog Summary&#8221;] || tour.shortSummary}                                              &lt;\/div&gt;                                              &lt;div&gt;                                                  &lt;div&gt;                                                      &lt;div&gt;                                                          ${tour[&#8220;Seating Plan&#8221;] || tour[&#8220;Getting There&#8221;] ? `&lt;a href=&#8221;${tour[&#8220;Seating Plan&#8221;] || tour[&#8220;Getting There&#8221;]}&#8221; target=&#8221;_blank&#8221;&gt;                                                              &lt;div&gt;                                                                  &lt;div&gt;                                                                      &lt;i&gt;&lt;\/i&gt;                                                                      &lt;span&gt;${tour[&#8220;Theatre Name&#8221;]}&lt;\/span&gt;                                                                      &lt;span&gt;${tour[&#8220;Seating Plan&#8221;] ? &#8220;Seating Plan&#8221; : &#8220;Getting There&#8221;}&lt;\/span&gt;                                                                  &lt;\/div&gt;                                                              &lt;\/div&gt;                                                          &lt;\/a&gt;` : &#8220;&#8221;}                                                          &lt;a href=&#8221;${tour[&#8220;Read More&#8221;] || `https:\/\/www.headout.com\/tour\/${tour.id}`}&#8221; target=&#8221;_blank&#8221;&gt;                                                              &lt;div&gt;READ MORE&lt;\/div&gt;                                                          &lt;\/a&gt;                                                          &lt;a href=&#8221;https:\/\/www.headout.com\/book\/${tour.id}\/seatmap-select\/&#8221; target=&#8221;_blank&#8221;&gt;                                                                  &lt;div&gt;BOOK NOW&lt;\/div&gt;                                                          &lt;\/a&gt;                                                      &lt;\/div&gt;                                                  &lt;\/div&gt;                                              &lt;\/div&gt;                                          &lt;\/div&gt;                                      &lt;\/div&gt;`                          : &#8220;&#8221;                      }&lt;\/div&gt; `;                    jQuery(&#8220;.product-wrapper&#8221;).append(htmlObject);                  jQuery(`.show-wrapper[data-tgid=${tour.id}]`)                      .find(&#8220;[data-show-ratings]&#8221;)                      .html(getStars(tour.averageRating));              }});                jQuery(&#8220;.accCtrl&#8221;).on(&#8220;click&#8221;,function (e) {                  selEle = jQuery(e.target).closest(&#8220;.show-wrapper&#8221;);                  jQuery(selEle).find(&#8220;.listicle-item-arrow&#8221;).toggleClass(&#8220;invert&#8221;);                  target = jQuery(selEle).find(&#8220;.accBody&#8221;);                  console.log(target)                  jQuery(target).slideToggle(&#8220;slow&#8221;);              });                filterEnabled &amp;&amp;                  monthCSV.forEach((month,index) =&gt; {                      const monthName = month.trim();                      const isSingleMonth = monthCSV?.length === 1;                      console.log(isSingleMonth)                      let htmlObject;                      let ids = &#8220;0&#8221;;                      if (monthName != &#8220;ALL SHOWS&#8221;) {                          ids = getTGIDListForMonth(allTours,monthName).join();                      }                        if (index == 0) {                          htmlObject = `&lt;div&#8221;}&#8221; data-tab=&#8221;${index + 1}&#8221; data-ids=&#8221;${ids}&#8221; data-active=&#8221;1&#8243; &gt; ${monthName}&lt;\/div&gt; `;                      } else {                          htmlObject = `&lt;div data-tab=&#8221;${index + 1                              }&#8221; data-ids=&#8221;${ids}&#8221; data-active=&#8221;0&#8243;&gt;${monthName}&lt;\/div&gt;`;                      }                        jQuery(&#8220;.shows-filters .tab-wrapper .mobi-text .mobi-wrap&#8221;).append(                          htmlObject                      );                  });                \/\/ Page Init Products List Generation              showTab(                  jQuery(&#8220;.tab-item[data-active=&#8217;1&#8242;]&#8221;).addClass(&#8220;active&#8221;).data(&#8220;ids&#8221;)              );                \/\/ Months Tab Change Handler              jQuery(&#8220;.tab-item&#8221;).click(function () {                  jQuery(&#8220;.tab-item&#8221;).data(&#8220;active&#8221;,0).removeClass(&#8220;active&#8221;);                  jQuery(this).data(&#8220;active&#8221;,1).addClass(&#8220;active&#8221;);                  jQuery(this)                      .closest(&#8220;.mobi-text&#8221;)                      .find(&#8220;.text&#8221;)                      .text(jQuery(this).text());                  showTab(jQuery(this).data(&#8220;ids&#8221;));                  jQuery(jQuery(&#8220;input.filter-chckbox:checked&#8221;).prop(&#8220;checked&#8221;,false));                  jQuery(&#8220;.cat-filter label:first-child&#8221;).delay(500).trigger(&#8220;click&#8221;);              });                \/\/ On Window Resize Hide Mobile Months Tab.              jQuery(window).resize(function (e) {                  if (jQuery(window).width() &gt; 630)                      jQuery(&#8220;.mobi-wrap&#8221;).attr(&#8220;style&#8221;,&#8221;&#8221;);              });                if (monthCSV?.length === 1) {                  jQuery(&#8220;.mobi-text&#8221;).addClass(&#8220;hide-tab&#8221;)              }              \/\/ Mobile Months Tabs Change Handler              jQuery(&#8220;.mobi-text&#8221;).click(function (e) {                  if (                      jQuery(&#8220;.mobi-wrap&#8221;).is(&#8220;:hidden&#8221;) ||                      jQuery(this).hasClass(&#8220;active&#8221;)                  )                      jQuery(this)                          .closest(&#8220;.mobi-text&#8221;)                          .toggleClass(&#8220;active&#8221;)                          .find(&#8220;.mobi-wrap&#8221;)                          .slideToggle(&#8220;slow&#8221;);              });                \/\/ Category Change Handler              jQuery(&#8220;[data-filter-cat]&#8221;).change(function (e) {                  jQuery(&#8220;[data-cat]&#8221;).removeClass(&#8220;mobi-active-filter&#8221;);                  jQuery(&#8220;[data-infotab].active&#8221;).removeClass(&#8220;active&#8221;);                  let catName = jQuery(this).data(&#8220;filter-cat&#8221;);                  jQuery(`[data-infotab=&#8217;${catName.toLowerCase()}&#8217;]`).addClass(&#8220;active&#8221;);                  jQuery(&#8220;[data-filter-cat]&#8221;).each(function (ele) {                      if (jQuery(this).find(&#8220;input&#8221;).is(&#8220;:checked&#8221;)) {                          cat = jQuery(this).data(&#8220;filter-cat&#8221;).toLowerCase();                          const activeMonth = jQuery(&#8220;.tab-item.active&#8221;).text();                            if (                              activeMonth != &#8220;All Shows&#8221; &amp;&amp; (cat == &#8220;new arrivals&#8221; ||                                  cat == &#8220;shows reopening&#8221;)                          ) {                              const elements = jQuery(&#8220;.show-wrapper.tabbed&#8221;).has(`[data-cat=&#8221;${cat}&#8221;]`);                              for (i = 0; i &lt; elements.length; i++) {                                  ele = elements[i];                                  const condition = dayjs(jQuery(ele).data(&#8220;open&#8221;),&#8221;MM\/DD\/YYYY&#8221;).format(&#8220;MMMM&#8221;) === activeMonth;                                  if (condition) {                                      jQuery(ele)                                          .addClass(&#8220;prepare&#8221;)                                          .find(`[data-cat=&#8221;${cat}&#8221;]`)                                          .addClass(&#8220;mobi-active-filter&#8221;);                                  }                              };                          } else {                              jQuery(&#8220;.show-wrapper.tabbed&#8221;)                                  .has(`[data-cat=&#8221;${cat}&#8221;]`)                                  .addClass(&#8220;prepare&#8221;)                                  .find(`[data-cat=&#8221;${cat}&#8221;]`)                                  .addClass(&#8220;mobi-active-filter&#8221;);                          }                      }                  });                  slideInShows(&#8220;prepare&#8221;,&#8221;active&#8221;);              });                \/\/ Page init default Category Handler &amp; Default Open Listicle              filterEnabled &amp;&amp;                  setTimeout(function () {                      jQuery(&#8220;[data-filter-cat]&#8221;).each(function (ele) {                          if (jQuery(this).find(&#8220;input&#8221;).is(&#8220;:checked&#8221;)) {                              cat = jQuery(this).data(&#8220;filter-cat&#8221;).toLowerCase();                              jQuery(&#8220;.show-wrapper.tabbed&#8221;)                                  .has(`[data-cat=&#8221;${cat}&#8221;]`)                                  .addClass(&#8220;prepare&#8221;);                          }                      });                      slideInShows(&#8220;prepare&#8221;,&#8221;active&#8221;);                      jQuery(&#8220;.cat-filter label:first-child&#8221;).delay(500).trigger(&#8220;click&#8221;);                      jQuery(&#8220;.show-wrapper:first-child .accCtrl&#8221;)                          .eq(0)                          .delay(1000)                          .trigger(&#8220;click&#8221;);                  },300);                \/\/ Lower Case All Data Attributes.              let lowerCaseAll = function (ele) {                  jQuery(ele).each(function () {                      var $this = jQuery(this),                          data = $this.data();                      for (var k in data)                          $this.attr(&#8220;data-&#8221; + k,data[k].toLowerCase().trim());                  });              };              lowerCaseAll(jQuery(&#8220;[data-filter-cat], [data-cat], [data-infotab]&#8221;));              if (!filterEnabled) {                  jQuery(&#8220;.show-wrapper&#8221;).each(function (i) {                      jQuery(this).addClass(&#8220;active&#8221;).css(&#8220;display&#8221;,&#8221;block&#8221;);                  });              }          };            filterEnabled &amp;&amp;              monthSubCategoryFilter.append(`&lt;div&gt;            &lt;div&gt;              &lt;h3&gt;${filterHeading}&lt;\/h3&gt;              &lt;div&gt;               &lt;\/div&gt;            &lt;\/div&gt;          &lt;\/div&gt;`);            filterEnabled &amp;&amp;              monthSubCategoryFilter.prepend(`&lt;div&gt;            &lt;div&gt;              &lt;div&gt;                &lt;div&gt; &lt;span&gt;${firstMonth}&lt;\/span&gt;&lt;span&gt;&lt;\/span&gt;&lt;\/div&gt;                &lt;div&gt;                &lt;\/div&gt;              &lt;\/div&gt;            &lt;\/div&gt;          &lt;\/div&gt;`);            async function getData() {              for (const [index,subCategory] of subCategoryIds.entries()) {                  subCategoryId = subCategory.trim();                  if (subCategoryId != &#8220;&#8221;) {                      await jQuery.get(                          {                              url: `https:\/\/vivillion.netlify.app\/api\/parsed-tours\/?primarySubCategory=${subCategoryId}&amp;limit=100&amp;city=New York`,                          },                          function (res) {                              const displayName = res.subCategory.displayName;                              const subCategoryId = res.subCategory.id;                              const subCategoryDiscription = monthSubCategoryFilter.data(                                  `${subCategoryId.toString()}-des`                              );                              const subCategoryName = monthSubCategoryFilter.data(                                  `${subCategoryId.toString()}-name`                              );                              categoryNameMap[displayName] = subCategoryName                                  ? subCategoryName                                  : displayName;                                res.pageData.items.forEach((item) =&gt; {                                  item.tags = [displayName];                                    if (allTours.filter((x) =&gt; x.id === item.id).length === 0) {                                      allTours.push(item);                                  } else {                                      allTours                                          .filter((x) =&gt; x.id === item.id)[0]                                          .tags.push(displayName);                                  }                              });                                jQuery(&#8220;.filter-combo .new-filters .cat-filter&#8221;)                                  .append(`&lt;label data-filter-cat=&#8221;${displayName.toLowerCase()}&#8221; data-filtercat=&#8221;${displayName.toLowerCase()}&#8221;&gt; &lt;input type=&#8221;radio&#8221; name=&#8221;cat&#8221;&gt;                    &lt;div&gt;&lt;span&gt;&lt;\/span&gt;${categoryNameMap[displayName]                                      }&lt;\/div&gt;                  &lt;\/label&gt; `);                                jQuery(&#8220;.info-tab&#8221;).append(                                  `&lt;div data-infotab=&#8221;${displayName}&#8221;&gt;                      &lt;h2&gt;${displayName}&lt;\/h2&gt;                      &lt;p&gt;${subCategoryDiscription}&lt;\/p&gt;                    &lt;\/div&gt;`                              );                              if (index == subCategoryIds.length &#8211; 1) {                                  allTours = allTours.map((tour) =&gt; {                                      const result = getMicroBrandsHighlightsData(                                          tour.microBrandsHighlight                                      );                                      return {                                          &#8230;result,                                          &#8230;tour,                                      };                                  });                                  functionsAfterDataUpdate();                              }                          }                      );                  }              }          }          getData();      });  [\/tcb-script]<\/p>\n<h2>Best Broadway Shows &#8211; Month on Month Guide <\/h2>\n<p>Wondering what are the <a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-new-york\/\" target=\"_blank\" rel=\"noopener\">best Broadway shows currently playing<\/a> ? Our guides have you covered. <\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-january\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in January<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-february\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in February<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-march\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in March<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-april\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in April<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in May<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-june\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in June<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-july\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in July<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-august\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in August<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-september\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in September<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-october\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in October<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-november\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in November<\/a><\/p>\n<p><a href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-december\/\" target=\"_blank\" rel=\"noopener\">Best Broadway Shows in December<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a quick taste of which Broadway shows have raised the curtain this May. Choose your pick and grab tickets before they sell out. The best Broadway shows in May are waiting for you! Best Broadway Shows in May [tcb-script src=&#8221;https:\/\/cdn.jsdelivr.net\/npm\/dayjs@1.10.7\/dayjs.min.js&#8221;][\/tcb-script][tcb-script src=&#8221;https:\/\/unpkg.com\/dayjs@1.8.21\/plugin\/isSameOrAfter.js&#8221;][\/tcb-script][tcb-script src=&#8221;https:\/\/unpkg.com\/dayjs@1.8.21\/plugin\/isSameOrBefore.js&#8221;][\/tcb-script] [tcb-script] dayjs.extend(window.dayjs_plugin_isSameOrAfter); dayjs.extend(window.dayjs_plugin_isSameOrBefore); const getTGIDListForMonth = (allTours,displayMonth) =&gt; { const allToursArray = [&hellip;]<\/p>\n","protected":false},"author":95,"featured_media":137438,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[760,501,534,19],"tags":[6800,6994,6990,6291,6294,6282],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Best Broadway Shows in May New York Theatre Guide | Headout<\/title>\n<meta name=\"description\" content=\"Browse our Broadway Theatre calendar and book your tickets for Broadway shows, musicals &amp; plays running in January.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Best Broadway Shows in May New York Theatre Guide | Headout\" \/>\n<meta property=\"og:description\" content=\"Browse our Broadway Theatre calendar and book your tickets for Broadway shows, musicals &amp; plays running in January.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/\" \/>\n<meta property=\"og:site_name\" content=\"Headout Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-27T08:03:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-10T17:06:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg\" \/>\n<meta name=\"author\" content=\"Maitray Oberoi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Maitray Oberoi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Best Broadway Shows in May New York Theatre Guide | Headout","description":"Browse our Broadway Theatre calendar and book your tickets for Broadway shows, musicals & plays running in January.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/","og_locale":"en_US","og_type":"article","og_title":"Best Broadway Shows in May New York Theatre Guide | Headout","og_description":"Browse our Broadway Theatre calendar and book your tickets for Broadway shows, musicals & plays running in January.","og_url":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/","og_site_name":"Headout Blog","article_published_time":"2022-05-27T08:03:19+00:00","article_modified_time":"2023-08-10T17:06:56+00:00","og_image":[{"url":"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg"}],"author":"Maitray Oberoi","twitter_card":"summary_large_image","twitter_image":"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg","twitter_misc":{"Written by":"Maitray Oberoi","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#article","isPartOf":{"@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/"},"author":{"name":"Maitray Oberoi","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/d8cb52afc3ae4a38e4a1b29d0273f385"},"headline":"Best Broadway shows in May, a New York theatre guide","datePublished":"2022-05-27T08:03:19+00:00","dateModified":"2023-08-10T17:06:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/"},"wordCount":1947,"publisher":{"@id":"https:\/\/www.headout.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg","keywords":["c-24","Entertainment","Listicle","New York","Spring Blogs","United States"],"articleSection":["Best of Broadway","Broadway","Broadway Show Tickets","Things to do in New York"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/","url":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/","name":"Best Broadway Shows in May New York Theatre Guide | Headout","isPartOf":{"@id":"https:\/\/www.headout.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#primaryimage"},"image":{"@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg","datePublished":"2022-05-27T08:03:19+00:00","dateModified":"2023-08-10T17:06:56+00:00","description":"Browse our Broadway Theatre calendar and book your tickets for Broadway shows, musicals & plays running in January.","breadcrumb":{"@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#primaryimage","url":"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg","contentUrl":"https:\/\/cdn-imgix.headout.com\/media\/images\/43c928cc373a6776257ed73b8211346c-Broadway%20shows.jpg","width":"1600","height":"1000","caption":"best-broadway-shows-may"},{"@type":"BreadcrumbList","@id":"https:\/\/www.headout.com\/blog\/best-broadway-shows-in-may\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Things to do in New York","item":"https:\/\/www.headout.com\/things-to-do-city-new-york\/"},{"@type":"ListItem","position":2,"name":"Broadway","item":"https:\/\/www.headout.com\/broadway-tickets-c-24\/"},{"@type":"ListItem","position":3,"name":"Broadway Show Tickets","item":"https:\/\/www.headout.com\/blog\/category\/things-to-do-city-new-york\/broadway-tickets-c-24\/wcp-broadway-show-tickets-category\/"},{"@type":"ListItem","position":4,"name":"Shows in May"}]},{"@type":"WebSite","@id":"https:\/\/www.headout.com\/blog\/#website","url":"https:\/\/www.headout.com\/blog\/","name":"Headout Blog","description":"Where will you go next?","publisher":{"@id":"https:\/\/www.headout.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.headout.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.headout.com\/blog\/#organization","name":"Headout","url":"https:\/\/www.headout.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2016\/07\/headout-logo.png","contentUrl":"https:\/\/www.headout.com\/blog\/wp-content\/uploads\/2016\/07\/headout-logo.png","width":550,"height":84,"caption":"Headout"},"image":{"@id":"https:\/\/www.headout.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/d8cb52afc3ae4a38e4a1b29d0273f385","name":"Maitray Oberoi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.headout.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/fe9e3565610654aaecefbd37bf913b05?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe9e3565610654aaecefbd37bf913b05?s=96&r=g","caption":"Maitray Oberoi"},"url":"https:\/\/www.headout.com\/blog\/author\/maitray-oberoiheadout-com\/"}]}},"_links":{"self":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/90035"}],"collection":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/users\/95"}],"replies":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/comments?post=90035"}],"version-history":[{"count":25,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/90035\/revisions"}],"predecessor-version":[{"id":140148,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/posts\/90035\/revisions\/140148"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/media\/137438"}],"wp:attachment":[{"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/media?parent=90035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/categories?post=90035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.headout.com\/blog\/wp-json\/wp\/v2\/tags?post=90035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}