Фильтрация объекта в массиве с помощью JavaScript в реагировать родной - PullRequest
0 голосов
/ 29 сентября 2018

Я застрял на чем-то, я думаю, что это просто глупо, но, попробовав некоторые вещи, я не могу найти решение.Любой совет?

У меня есть массив с объектами в этом формате:

   [
    Object {
      "name": "name",
     "description": "100 jours ferme",
     "image: "path_image",
     "culture": Array [
      Object {
        "name": "name",
        "value": "309",
      }
    ]}
    ...
    ]

С функцией в моем проекте react native я получаю selected value, например: 309

Итак, я пытаюсь создать New Array только с элементами, содержащими это значение, в моем объекте внутри culture и изменить состояние моего массива (с помощью setState)

Я знаю, что могу сопоставить весь массив culture с .map(), но тогда я застрял.Я просто хочу сказать: «Я хочу новый массив с этими элементами» ...

Тогда я знаю, было ли у меня что-то подобное:

"culture": 309

Я мог бы сделать это:myArray.filter(i => i.culture == selectedValue)

Любая помощь о том, как я могу сделать это с .filter(), .map()?

Спасибо

1 Ответ

0 голосов
/ 29 сентября 2018

Вы можете Array.prototype.filter по массиву, затем для каждого culture выполнения Array.prototype.find с предикатом

o => o.value === selectedValue

Вот пример работы:

const arr = [
  {
    name: "name",
    description: "100 jours ferme",
    image: "path_image",
    culture: [{
      name: "name",
      value: "309"
    }]
  },
  {
    name: "name",
    description: "100 jours ferme",
    image: "path_image",
    culture: [{
      name: "name",
      value: "308"
    }]
	}
];

const selectedValue = '309';
const newArr = arr.filter(obj => obj.culture.find(o => o.value === selectedValue));
console.log(newArr)
.as-console-wrapper { max-height: 100% !important; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...