Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,959 questions

51,901 answers

573 users

How to merge overlapping ranges (start,end),(start,end) in JavaScript

1 Answer

0 votes
function mergeRanges(ranges) {
  // Sort by the start of each range
  ranges.sort((a, b) => a[0] - b[0]);

  const merged = [];

  for (const [start, end] of ranges) {
    if (merged.length === 0 || start > merged[merged.length - 1][1]) {
      merged.push([start, end]);
    } else {
      const last = merged.length - 1;
      merged[last][1] = Math.max(merged[last][1], end);
    }
  }

  return merged;
}

const ranges = [
  [302, 447],
  [488, 489],
  [121, 234],
  [200, 421],
  [140, 354]
];

console.log(mergeRanges(ranges));



/*
run:

[ [ 121, 447 ], [ 488, 489 ] ]

*/

 



answered Jan 26 by avibootz
...