如何从api的一部分接收数据到另一部分

时间:2019-07-31 13:58:30

标签: javascript arrays reactjs object

好的,所以我正在尝试获取此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: []
    }

1 个答案:

答案 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)

使用此解决方案,您将仅获得一个数组,并且可以使用单个对象的值。