好的,所以我正在尝试获取此api工作。问题是我不知道如何在此api的其他部分接收到一些带有链接的数据。
api本身看起来像这样:
{
product
{
id,
title,
relationship:{
seller: sellerId
}
}
seller{
company,
seller: seller
name: name
}
}
因此,这个SellerId和Seller是相同的。如何将它们链接在一起?
我已经显示了SellerId,但是我需要使用SellerId显示名称本身。 我尝试过:
render(){
const { card, names } = this.props;
const items = card.map((item, index) => {
return (
<li key={index} className='list-group-item card'>
<ListItem
name = { item.relationships.seller }
title = { item.title }
price = { item.price }
pictures = { item.pictures }/>
</li>
);
})
return (
<ul className='list-group'>
{ items }
</ul>
)
}
state = {
item: [],
names: []
}
答案 0 :(得分:0)
如果要合并两个对象数组(产品和卖家)中的数据,则可以使用以下方法:
// the function to merge the objects
function mergeObjects(product, seller) {
if (seller.seller === product.relationship.seller) {
return Object.assign(seller, product)
}
}
// for single objects:
const seller = sellerId = 'Seller'
const product1 = {
id: 1,
title: 'title1',
relationship: {
seller: sellerId
}
}
const seller1 = {
company: 'company1',
seller: seller,
name: 'name1'
}
console.log('single objects:', mergeObjects(product1, seller1))
// for arrays of objects
const sellerArr1 = sellerIdArr1 = 'sellerArr1'
const sellerArr2 = sellerIdArr2 = 'sellerArr2'
const products = [{
id: 1,
title: 'title1',
relationship: {
seller: sellerIdArr1
}
},
{
id: 2,
title: 'title2',
relationship: {
seller: sellerIdArr2
}
}
]
const sellers = [{
company: 'company1',
seller: sellerArr1,
name: 'name1'
},
{
company: 'company2',
seller: sellerArr2,
name: 'name2'
}
]
const withArrays = sellers.map((e, i) => {
return mergeObjects(products.filter(el => el.relationship.seller === e.seller)[0], e)
})
console.log('arrays:', withArrays)
使用此解决方案,您将仅获得一个数组,并且可以使用单个对象的值。