Как я могу удалить элемент из массива, который отображает его данные в компоненте? - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть компонент, который отображает некоторые данные из массива.Мне нужно отфильтровать этот массив в зависимости от условия.Я не знаю, правильно ли фильтровать массив, или просто удалить ненужный элемент из этого массива.

Компонент выглядит так:

const PassengerCardBasedOnRoute = ({
   passengerCardId,
   isAddToMyPassengersSuccess,
   unassignedDropOffPassengers
 }) => {

  const filteredData = filterByParam =>
    filterByParam.filter(obj =>
      Object.keys(obj).some(key =>
        String(obj[key])
          .toLowerCase()
          .includes(searchParam.toLowerCase()),
      ),
    );

  const componentToRenderBasedOnParams = info => (
    <View key={info.id}>
      {isAddToMyPassengersSuccess && info.id === passengerCardId && (
        <PassengersAdded name={info.name} id={info.id} />
      )}
      <PassengersInfo
        id={info.id}
        name={info.name}
      />
    </View>
  );

  const showFeedbackIfNoLength = data => {
    if (size(filteredData(data))) {
      filteredData(data).map(info => componentToRenderBasedOnParams(info));
    }
  };

  return (
    <>
      <OptionsModal>{<AllPassengersOptionsModal />}</OptionsModal>
      <View>
        {unassignedDropOffPassengers && showFeedbackIfNoLength(unassignedDropOffPassengers)}
      </View>
    </>
  );
};

Массив данных, над которым я пытаюсь работать, это unassignedDropOffPassengers.Что вы можете увидеть выше.И ключевая функция для работы заключается в следующем:

  const componentToRenderBasedOnParams = info => (
    <View key={info.id}>
      {isAddToMyPassengersSuccess && info.id === passengerCardId && (
        <PassengersAdded name={info.name} id={info.id} />
      )}
      <PassengersInfo
        id={info.id}
        name={info.name}
      />
    </View>
  );

Допустимое условие:

      {isAddToMyPassengersSuccess && info.id === passengerCardId && (
        <PassengersAdded name={info.name} id={info.id} />
      )}

Что я должен сделать, так это то, что при выполнении вышеуказанного условия я долженудалить предмет из unassignedDropOffPassengers.Или просто отфильтруйте его, как здесь, где я применяю фильтр:

  const filteredData = filterByParam =>
    filterByParam.filter(obj =>
      Object.keys(obj).some(key =>
        String(obj[key])
          .toLowerCase()
          .includes(searchParam.toLowerCase()),
      ),
    );

Что я хочу знать, так это как этого добиться / адаптировать его с моим кодом.Исходя из условия, которое я упомянул выше isAddToMyPassengersSuccess && info.id === passengerCardId.

Элемент в массиве, который мне нужно опустить, соответствует passengerCardId.

Итак, есть идеи?

РЕДАКТИРОВАТЬ:

Я использую lodash кстати.

...