Tengo un objeto con Timeseries y un valor para mostrar un gráfico. El valor se actualiza a menudo. Quiero mostrar la cantidad de horas que el valor no ha cambiado.
Por ejemplo: considere el objeto a continuación, el valor permanece igual durante algunas horas. Quiero mostrar cuántas horas no ha cambiado. Si algún valor nuevo es diferente, entonces desea actualizar las horas a cero.
obj = [{ "value": 48.52062, "timestamp": 1652848223325 }, { "value": 48.52062, "timestamp": 1652838323281 }, { "value": 48.52062, "timestamp": 1652833823275 }, { "value": 51.71021, "timestamp": 1652830223280 }, { "value": 48.52062, "timestamp": 1652829323276 }] Estoy tratando de filtrar el objeto usando obj.filter(e => e.value === 48.52062) y verifico las marcas de tiempo del objeto filtrado y calculo las horas del primer objeto y la última marca de tiempo del objeto
Pero, el objeto filtrado devuelve incluso los datos antiguos, en este caso, el valor de los datos se cambia en el medio, que no es una línea plana. Solo quiero verificar solo hasta que el valor haya cambiado por última vez.
No estoy seguro, si esta es la forma correcta de hacerlo. Aquí está el código:
var obj = [{ "value": 48.52062, "timestamp": 1652848223325 }, { "value": 48.52062, "timestamp": 1652838323281 }, { "value": 48.52062, "timestamp": 1652833823275 }, { "value": 51.71021, "timestamp": 1652830223280 }, { "value": 48.52062, "timestamp": 1652829323276 }]; const x = obj.filter(e => e.value === 48.52062) const timeStart = x[0].timestamp; const timeEnd = x[x.length - 1].timestamp; console.log(getHourDiff(timeStart, timeEnd)); function getHourDiff(start, end) { return Math.floor((end - start) / 3600000) }