2 значения в 2 объектах, которые равны, но все равно считаются не равными при сравнении - PullRequest
0 голосов
/ 13 июля 2020

У меня есть 2 массива объектов. Структура объектов точно такая же, есть ключ, временная метка и некоторые другие вещи.

arr1 = [{key: 2, timestamp:2020-07-07T02:00:00.000Z},other stuff:....}...]
arr2 = [{key: 7, timestamp:2020-07-07T02:00:00.000Z},other stuff:....}...]

arr1 отслеживает вещи по часам, поэтому каждая временная метка ежечасно один arr2 отслеживает вещи каждые 15 минут, поэтому там есть временные метки, похожие на 2020-07-07T02:45:00.000Z

То, что я пытаюсь сделать, это найти, совпадают ли временные метки в обоих массивах. Я просматриваю 1 массив, а затем передаю временная метка для его поиска в другом

Проблема в том, что он не находит подходящего значения, хотя я знаю, что он там

arr1.map(function (e) {
        console.log(e.timestamp, arr2[3].timestamp, e.timestamp == arr2[3].timestamp )
      }); 

Таким образом, приведенный выше код проходит через все значения временной метки в arr1 а затем консоль регистрирует их, плюс определенное значение c, которое, как я знаю, находится в arr1 из arr2, я затем консоль записываю сравнение

В журнале консоли отображается следующее

2020-07-07T02:00:00.000Z 2020-07-07T02:00:00.000Z false

Это false должно быть true, не так ли ????

NB: Я пробовал с == и ===, но оба дают false

1 Ответ

0 голосов
/ 13 июля 2020

Вы не можете так сравнивать метку времени, потому что метка времени является объектом.


new Date('2020-07-07T02:00:00.000Z') == new Date('2020-07-07T02:00:00.000Z')

// false

Давайте попробуем (e.timestamp - arr2 [3] .timestamp) == 0)

arr1.map(function (e) {
    console.log(e.timestamp, arr2[3].timestamp, (e.timestamp - arr2[3].timestamp) == 0);
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...