У меня проблемы с поиском пути l oop через элементы массива для фильтрации другого массива объектов. Я нашел способ перебирать this.productID, когда есть только один элемент, но когда this.productID является массивом, элементы отображаются с их содержимым, помеченным как неопределенное.
Спасибо за помощь!
Примечание: productLib передается как product от его родительского компонента
export class Product extends React.Component {
constructor(props){
super(props);
this.productID = this.props.product.similarItems;
this.filterProductById = this.filterProductById.bind(this);
}
filterProductById() {
return this.productID.map(ID => {
return productLib.filter(product => {
return product.ID === ID
})
})}
/*
The code below only works when there's a single string in this.productID
return productLib.filter(product => {
return product.ID === this.productID
})}*/
render() {
return(
<div className="recommended">
{
this.filterProductById().map(product => {
return <Products product={product} key={product.ID}/>
})
}
</div>
)
}
}
Вот как форматируются данные в productLib:
export const productLib = [
{
ID: "001",
...,
similarItems: ["004", "002", "001", "015"],
},
{...},
...
]