Массив фильтров Typescript на основе значения из другого массива - PullRequest
1 голос
/ 25 июня 2019

Этот вопрос задавался много раз, но я не могу заставить его работать.
У меня есть два массива, первый:

 first= [
      {
        id:1, descrizione: "Oggetto 1", 
        codiceAzienda: "Codice 1",
        dataInserimento:"01-01-2019",
        dataAggiornamento: "01-01-2019"
      },
      {
        id:2, descrizione: "Oggetto 2", 
        codiceAzienda: "Codice 2",
        dataInserimento:"01-01-2019",
        dataAggiornamento: "01-01-2019"
      },
      {
        id:3, descrizione: "Oggetto 3", 
        codiceAzienda: "Codice 3",
        dataInserimento:"01-01-2019",
        dataAggiornamento: "01-01-2019"
      },
      {
        id:4, descrizione: "Oggetto 4", 
        codiceAzienda: "Codice 4",
        dataInserimento:"01-01-2019",
        dataAggiornamento: "01-01-2019"
      },
      {
        id:5, descrizione: "Oggetto 5", 
        codiceAzienda: "Codice 5",
        dataInserimento:"01-01-2019",
        dataAggiornamento: "01-01-2019"
      }
    ]

, а второй такой:

second = [
          {
            id:1, descrizione: "Oggetto 1"
          },
          {
            id:3, descrizione: "Oggetto 3"
          }
        ]

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

final= [
          {
            id:1, descrizione: "Oggetto 1", 
            codiceAzienda: "Codice 1",
            dataInserimento:"01-01-2019",
            dataAggiornamento: "01-01-2019"
          },
          {
            id:3, descrizione: "Oggetto 3", 
            codiceAzienda: "Codice 3",
            dataInserimento:"01-01-2019",
            dataAggiornamento: "01-01-2019"
          }
        ]

Я пытался сделать это:

final= first.filter(ogg => second.map(y => y.id).includes(ogg.id));

, но в результате у меня есть все объекты первого массива.Я также пытался с array.some():

final= first.filter(ogg => second.some(id => ogg.id == id));

В этом случае окончательный массив пуст.
Пример второго случая

1 Ответ

0 голосов
/ 25 июня 2019

Это будет работать:

const final = first.filter(x => second.find(y => y.id === x.id))

Вы можете увидеть это рабочее здесь .

...