我有一个组件,可以渲染来自数组的某些数据。我需要根据条件过滤该数组。我不知道过滤数组是正确的方法,还是只是从数组中删除不需要的项目。
该组件如下所示:
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
顺便说一句。