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;
}