hardware event array reduction
combine service and java_gateway event array
by amrendra kumar
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
JavaScript
const input1 = [{
connect: true,
timestamp: new Date('5-May-2019 10:00:00')
},
{
connect: false,
timestamp: new Date('5-May-2019 10:01:00')
},
{
connect: true,
timestamp: new Date('5-May-2019 10:05:00')
}
]
const input2 = [{
connect: true,
timestamp: new Date('5-May-2019 10:00:00')
},
{
connect: true,
timestamp: new Date('5-May-2019 10:02:00')
},
{
connect: false,
timestamp: new Date('5-May-2019 10:04:00')
}
]
const filterInputEvents = inputArray => {
let eventToCompare = inputArray[0]
const outputArray = [eventToCompare]
for (let i = 0; i < inputArray.length - 1; i++) {
if (eventToCompare.connect !== inputArray[i + 1].connect) {
eventToCompare = inputArray[i + 1]
outputArray.push(eventToCompare)
}
}
if (outputArray[outputArray.length - 1].timestamp !== inputArray[inputArray.length - 1].timestamp) outputArray.push(inputArray[inputArray.length - 1])
//console.log(inputArray, outputArray)
return outputArray
}
const combinedArray = (inputArray1, inputArray2) => {
//const filteredArray1 = filterInputEvents(inputArray1)
///const filteredArray2 = filterInputEvents(inputArray2)
console.log('combined', [...inputArray1, ...inputArray2])
const combinedTimestamps = _.uniqBy([...inputArray1, ...inputArray2].map(t => t.timestamp))
console.log('combinedTimestamps',combinedTimestamps);
const sortedCombinedTimestamps = _.sortBy(combinedTimestamps)
//console.log(sortedCombinedTimestamps)
const combinedEventArray = sortedCombinedTimestamps.map(t => {
// console.log(t)
const a1Index = inputArray1.findIndex(a => a.timestamp > t)
const a2Index = inputArray2.findIndex(b => b.timestamp > t)
// console.log(a1Index, a2Index);
const eventArray1 = a1Index === -1 ? inputArray1[inputArray1.length - 1] : a1Index > 0 ? inputArray1[a1Index - 1] : {
connect: false
}
const eventArray2 = a2Index === -1 ? inputArray2[inputArray2.length - 1]...