JSFiddle - React, Tailwind, and code Playground
JavaScript
var data1 = [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110];
var data2 = [102, 104, 106, 108];
var buffer = 3;
function binarySearch(arr, value) {
var left = 0, right = arr.length;
var i;
while (left < right) {
i = parseInt((right + left) / 2);
if (arr[i] <= value) {
left = i + 1;
} else {
right = i;
}
}
return left;
}
var largestData2 = data2[data2.length - 1];
var smallestData1LargerThanData2Index = binarySearch(data1, largestData2);
var sliceStart = smallestData1LargerThanData2Index - buffer;
if (sliceStart < 0) sliceStart = 0;
var result = data1.slice(sliceStart);
console.log(JSON.stringify(result));