{"id":21313,"date":"2022-11-13T01:04:48","date_gmt":"2022-11-12T19:34:48","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/"},"modified":"2022-11-13T01:04:48","modified_gmt":"2022-11-12T19:34:48","slug":"solved-find-all-ranges-of-consecutive-numbers-in-array-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/","title":{"rendered":"[Solved] Find all ranges of consecutive numbers in array [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-55008541\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"55008541\" data-parentid=\"55008138\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You can use <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Array\/Reduce\"><code>Array.reduce()<\/code><\/a> to do it:<\/p>\n<ol>\n<li>Sort the array (safety)<\/li>\n<li>Iterate over the array with <code>reduce<\/code> to create an object containing the <code>ranges<\/code> and the start of the active range (<code>rangeStart<\/code>).<\/li>\n<li>On the first iteration, push the first element in the ranges and save this element as the <code>rangeStart<\/code><\/li>\n<li>On the successive iterations, if the value equals the last value + 1, we are in the same range, so we update it by changing the last value in the <code>ranges<\/code> array. Otherwise, we push the element in the <code>ranges<\/code> array and update <code>rangeStart<\/code> to be this element.<\/li>\n<li>Return the <code>ranges<\/code> property of the object output by <code>reduce<\/code> and join it using commas.<\/li>\n<\/ol>\n<div class=\"snippet\" data-lang=\"js\" data-hide=\"false\" data-console=\"true\" data-babel=\"false\">\n<div class=\"snippet-code\">\n<pre class=\"snippet-code-js lang-js prettyprint-override\"><code>function findRanges(numbers) {\r\n  return [...numbers].sort((a, b) =&gt; a - b).reduce((acc, x, i) =&gt; {\r\n    if (i === 0) {\r\n      acc.ranges.push(x);\r\n      acc.rangeStart = x;\r\n    } else {\r\n      if (x === acc.last + 1) {\r\n        acc.ranges[acc.ranges.length-1] = acc.rangeStart + '-' + x;\r\n      } else {\r\n        acc.ranges.push(x);\r\n        acc.rangeStart = x;\r\n      }\r\n    }\r\n    acc.last = x;\r\n    return acc;\r\n  }, { ranges: [] }).ranges.join(', ');\r\n}\r\n\r\nconsole.log(findRanges([1, 3, 4, 5, 7]));\r\nconsole.log(findRanges([1, 2, 3, 5]));\r\nconsole.log(findRanges([2, 3, 4, 5, 6]));<\/code><\/pre>\n<\/div>\n<\/div><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">0<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Find all ranges of consecutive numbers in array [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You can use Array.reduce() to do it: Sort the array (safety) Iterate over the array with reduce to create an object containing the ranges and the start of the active range (rangeStart). On the first iteration, push the first element in the ranges and save this element as the rangeStart On the successive iterations, &#8230; <a title=\"[Solved] Find all ranges of consecutive numbers in array [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\" aria-label=\"More on [Solved] Find all ranges of consecutive numbers in array [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[457,361,898,333],"class_list":["post-21313","post","type-post","status-publish","format-standard","hentry","category-solved","tag-algorithm","tag-arrays","tag-ecmascript-6","tag-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Find all ranges of consecutive numbers in array [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Find all ranges of consecutive numbers in array [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You can use Array.reduce() to do it: Sort the array (safety) Iterate over the array with reduce to create an object containing the ranges and the start of the active range (rangeStart). On the first iteration, push the first element in the ranges and save this element as the rangeStart On the successive iterations, ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-12T19:34:48+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Find all ranges of consecutive numbers in array [closed]\",\"datePublished\":\"2022-11-12T19:34:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\"},\"wordCount\":123,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"algorithm\",\"arrays\",\"ecmascript-6\",\"javascript\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\",\"name\":\"[Solved] Find all ranges of consecutive numbers in array [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-12T19:34:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Find all ranges of consecutive numbers in array [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Find all ranges of consecutive numbers in array [closed] - JassWeb","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:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Find all ranges of consecutive numbers in array [closed] - JassWeb","og_description":"[ad_1] You can use Array.reduce() to do it: Sort the array (safety) Iterate over the array with reduce to create an object containing the ranges and the start of the active range (rangeStart). On the first iteration, push the first element in the ranges and save this element as the rangeStart On the successive iterations, ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/","og_site_name":"JassWeb","article_published_time":"2022-11-12T19:34:48+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Find all ranges of consecutive numbers in array [closed]","datePublished":"2022-11-12T19:34:48+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/"},"wordCount":123,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["algorithm","arrays","ecmascript-6","javascript"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/","name":"[Solved] Find all ranges of consecutive numbers in array [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-12T19:34:48+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-find-all-ranges-of-consecutive-numbers-in-array-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Find all ranges of consecutive numbers in array [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/21313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=21313"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/21313\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=21313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=21313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=21313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}