У меня есть два массива объектов в JavaScript:
первый получает вес, полученный датчиком
{
time : 'some timestamp',
weigth : 1160
}
второй получает RFID, полученный другим датчиком
{
time : 'some timestamp',
rfid : 'some rfid identifer'
}
Для каждого полученного идентификатора RFID я хочу получить вес до и после полученного времени данных. И если у меня нет веса в массиве, полученном после RFID, я получил неопределенное значение.
Оба массива отсортированы по времени.
На данный момент у меня есть текущий код:
var rfidNext = [];
for (var i = 0; i < this.acquiredData.rfid.length; i++)
{
var weigths = this.acquiredData.weigthLitter;
var currentRfid = this.acquiredData.rfid[i];
var weigther = weigths.find(w => w.time > currentRfid.time);
if (!weigther)
rfidNext.push(currentRfid);
else
toSend.events.push({
// Some logic here
});
}
этот код, кажется, дает мне правильный вес, полученный после RFID-данных, но я не могу найти чистый способ получить тот, который был раньше.
Редактировать: пример данных
[ { time: 1561458881523, value: '1000 0000 0000 0001' },
{ time: 1561458882212, value: '1000 0000 0000 0001' },
{ time: 1561458883941, value: '1000 0000 0000 0002' } ]
[ { time: 1561458881182, value: 2130 },
{ time: 1561458881584, value: 1000 },
{ time: 1561458882789, value: 2130 },
{ time: 1561458884599, value: 3290 } ]
С этими данными, например: первая RFID берется между первым и вторым полученным весом, что означает, что животное вылезло из коробки, 2 RFID показывает, что животное вернулось, а последнее показывает, что животное вес снова становится выше, с другим RFID, так что в коробке появилось другое животное.
Редактировать: Пример с большим набором данных
[ { time: 1561469442605, value: '1000 0000 0000 0001' },
{ time: 1561469463263, value: '1000 0000 0000 0001' },
{ time: 1561469503038, value: '1000 0000 0000 0002' },
{ time: 1561469524312, value: '1000 0000 0000 0001' },
{ time: 1561469530073, value: '1000 0000 0000 0002' },
{ time: 1561469551351, value: '1000 0000 0000 0001' },
{ time: 1561469552085, value: '1000 0000 0000 0001' },
{ time: 1561469579144, value: '1000 0000 0000 0001' },
{ time: 1561469627817, value: '1000 0000 0000 0001' },
{ time: 1561469629525, value: '1000 0000 0000 0002' } ]
[ { time: 1561469394648, value: 1000 },
{ time: 1561469443257, value: 2130 },
{ time: 1561469463268, value: 1000 },
{ time: 1561469503679, value: 2160 },
{ time: 1561469524962, value: 3290 },
{ time: 1561469530073, value: 2130 },
{ time: 1561469551358, value: 1000 },
{ time: 1561469552740, value: 2130 },
{ time: 1561469579144, value: 1000 },
{ time: 1561469628430, value: 2130 },
{ time: 1561469630175, value: 3290 } ]
Для подробного объяснения:
В начале нет ни одного животного, вес 1000
Затем появляется животное 1: вес 2130
животное 1 вылезти: вес 1000
животное 2 попадает в: вес: 2160
животное 1 попадает в: вес 3290
и так далее ...
Поэтому моя цель - выяснить, попадает ли животное внутрь или наружу в соответствии с вариацией веса и показаниями RFID.