Фильтрация массива внутри объекта внутри объекта внутри массива объектов - PullRequest
0 голосов
/ 01 августа 2020

У меня есть следующий массив объектов:

[
  {
    likes: [],
    _id: 5f254e21fd3e040640de38b2,
    content: 'try this',
    author: {
      posts: [Array],
      comments: [],
      images: [],
      followers: [Array],
      following: [],
      _id: 5f21cd54ef00270af6126df3,
      name: 'Octavian David',
      password: '$2b$10$kwqMFk/B.N2wNKC01D8Tt.KezQN3kFQyqXdEcfVizFWmL.HY2/uJe',
      email: 'xx.com',
      username: 'octaviandd',
      createdAt: '1596050772192',
      __v: 0
    },
    parentPost: {
      likes: [],
      comments: [Array],
      _id: 5f254e19fd3e040640de38b1,
      author: 5f21cd54ef00270af6126df3,
      description: 'asdqwdqwdqd',
      picture: 'urllink',
      createdAt: '1596280345466',
      __v: 0
    },
    createdAt: '1596280353464',
    __v: 0
  },
  {
    likes: [],
    _id: 5f25527f1a0f870948f4a150,
    content: 'lets try again then',
    author: {
      posts: [Array],
      comments: [],
      images: [],
      followers: [Array],
      following: [],
      _id: 5f21cd54ef00270af6126df3,
      name: 'Octavian David',
      password: '$2b$10$kwqMFk/B.N2wNKC01D8Tt.KezQN3kFQyqXdEcfVizFWmL.HY2/uJe',
      email: 'xxxx.com',
      username: 'octaviandd',
      createdAt: '1596050772192',
      __v: 0
    },
    parentPost: {
      likes: [],
      comments: [Array],
      _id: 5f2552761a0f870948f4a14f,
      author: 5f21cd54ef00270af6126df3,
      description: 'try ths jow',
      picture: 'urllink',
      createdAt: '1596281462164',
      __v: 0
    },
    createdAt: '1596281471814',
    __v: 0
  }
]

Итак, это проходит через преобразователь GraphQL. У меня есть идентификатор, полученный при вводе, и я хочу отфильтровать массив объектов.

Итак, я хочу сопоставить массив объектов, ввести свойство parentPost в каждый объект, а затем получить parentPost._id и сравнить с моим вводом, чтобы я мог его отфильтровать. Если [Array] .object.parentPost_id совпадает с моим вводом, я хотел бы вернуть этот объект целиком.

Я думаю что-то вроде объекта строк.

arrayOfObjects.map(object => object.parentPost._id.find(el => el === input))

1 Ответ

1 голос
/ 01 августа 2020

Ваше предположение не будет фильтровать по двум причинам: он отображает arrayOfObjects, поэтому всегда будет возвращать их все, а _id не является массивом, поэтому .find() не будет делать то, что вы хотите.

My предложение:

arrayOfObjects.filter(object => object.parentPost._id === input);

filter возвращает новый массив, перебирая все элементы и получая только те, которые возвращают true в условии. object.parentPost._id === input просто проверяет, соответствует ли _id вашему input.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...