JSFiddle - React, Tailwind, and code Playground

by shweta naik

JavaScript

var input1 = [
        { start :1, end :3, value :1 }, 
    { start :2, end :4, value :1 }, 
    { start :2, end :5, value :2 }, 
    { start :4, end :5, value :1 }

    ];
    
    var temp = getSumForIntervals(input1);
    var output = [];
    var o = {};
    for(var i=0; i<temp.length;i++){
        var next = i+1;
        
            if(next < temp.length && temp[i].value == temp[next].value){
                //console.log(temp[i].start +" : "+temp[next].end+" : "+temp[next].value);
                o = {start: temp[i].start, end: temp[next].end, value: temp[next].value};
                if(temp[next].value == temp[temp.length-1].value){
                    output[output.length] = o;
                    break;
                }                
            }else{
                o = {start: temp[i].start, end: temp[i].end, value: temp[i].value};
               // console.log(temp[i].start +" : "+temp[i].end+" : "+temp[i].value);
            }
        output[output.length] = o;
    }
    for(var i=0; i<output.length;i++){
        console.log(output[i].start +" : "+output[i].end+" : "+output[i].value);
    }


function getSumForIntervals(input1){
    var startpt = input1[0].start;
    var endpt = input1[input1.length - 1].end;
    var temp = [];
    for(var i=startpt; i<=endpt;i++){
         var nextpt= i+1;
        //console.log(i +" : "+nextpt);
        var value = 0;
        if(nextpt <= endpt){
            for(var k=0; k<input1.length; k++){            
                if(i>= input1[k].start && nextpt <= input1[k].end){
                    value = value + input1[k].value;
                }
            }
            var o = {start: i, end: nextpt, value: value};
            
            temp[temp.length] = o;
        }
    }
    return temp;
}