L oop в массив объектов, сравнивающих два массива - PUG (Jade) - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь в Javascript, используя шаблон PUG (если возможно), сравнить два массива и, когда я найду соответствие в идентификаторах, отобразить некоторые конкретные элементы.

// First Array : I iterate over "hearts" object 
// Called in PUG : - const user

    [
      {
        "hearts": [
          "5e70c63a94b27b164c9b897f",
          "5e723c75e4bfdf4f58c55e32"
        ],
        "_id": "5e6bb1189978fd5afc98c57a",
        "email": "catherine@catherine.com",
        "name": "Catherine",
        "photo": "0121b7fe-b2ae-4e75-979d-7dea1a432855.jpeg",
        "__v": 0
      },
      {
        "hearts": [
          "5e723c75e4bfdf4f58c55e32"
        ],
        "_id": "5e6bc41f5915e3d2980a5174",
        "email": "marc@marc.com",
        "name": "Marc",
        "photo": "4caa7bfb-6408-4893-a78b-fa6e8e5b03e7.png",
        "__v": 0
      }
    ]
// Second array : I iterate over "author.hearts" object 
// Called in PUG : - const store

    [{
        "product": {
            "categories": [
                1,
                2
            ]
        },
        "_id": "5e6bcc76c4022eae00e22af6",
        "date": "2222-02-20T21:22:00.000Z",
        "author": {
            "hearts": [
                "5e723c75e4bfdf4f58c55e32",
                "5e70c63a94b27b164c9b897f"
            ],
            "_id": "5e6bb1189978fd5afc98c57a",
            "__v": 0
        },
        "created": "2020-03-13T18:09:58.086Z",
        "id": "5e6bcc76c4022eae00e22af6"
    }]

Я хочу l oop по первому массиву, найти первый идентификатор (здесь 5e70c63a94b27b164c9b897f), l oop по второму массиву и посмотреть, присутствует ли этот идентификатор в пределах объект "author.hearts". Если это не так, продолжите работу со вторым идентификатором и, если он присутствует, отобразите все ключи (теги, фотографии, _id, date ...) от объекта, где был найден идентификатор.

В моем примере у меня есть только один объект в моем массиве, но у меня будет намного больше позже. Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 19 марта 2020

Если я правильно понимаю, вы можете сделать что-то вроде этого. L oop через всех ваших пользователей, и когда вы найдете их идентификатор в author.hearts , остановите l oop и верните объект, в котором был найден пользователь _id.

var resultFound = undefined;
try {
    user.forEach((el) => {
       const id = el._id;
       const result = store.find(el => el.author.hearts.includes(id));   
       if (result) {
          resultFound = result;
          throw resultFound;
       }
    });
} catch (e) {
    if (e !== resultFound) {
       throw e;
    }
}
...