如果两个数组拥有相同的所有者ID,如何将它们进行比较?

3

enter image description here如果两个数组拥有相同的所有者,请问如何将它们进行比较? 第一个数组是userUserInfo,第二个数组是orders。我想要比较它们是否具有相同的ownerId。 这两个数组从Firebase中获取。 如果ownerId === ownerId,则我所编写的新代码的硬编码会执行。

这些是我通过console.log打印出来的数组

Array [
  UserInfo {
    "adress": "Flat 76",
    "dateofbirth": "26-09-1995",
    "email": “testt@yahoo.com",
    "id": "-M0s8z5kilepQfGaDarw",
    "namee": “testt”,
    "ownerId": "XS7ARDt5C8hKtQyTSrPh9oLKMUp2",
    "phonenumber": "079112",
  },
 ]
Array [
  Order {
    "date": 2020-02-24T20:46:24.981Z,
    "id": "-M0swr3CHlIJczaLxppg",
    "items": Array [
      Object {
        "productId": "-M0swATocaxb_VboxWrd",
        "productPrice": 10,
        "productTitle": "Water",
        "quantity": 1,
        "sum": 10,
      },
    ],
    "ownerId": "XS7ARDt5C8hKtQyTSrPh9oLKMUp2",
    "productTitle": undefined,
    "totalAmount": 10,
  },
]

const OrderItem = props => {
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState();

  const [showDetails, setShowDetails] = useState(false);
  const dispatch = useDispatch();
  const orders = useSelector(state => state.orders.orders);

  const userUserInfo = useSelector(state => state.userInfo.userUserInfo)

//const newu = userUserInfo.filter(prod=>prod.ownerId === 'XS7ARDt5C8hKtQyTSrPh9oLKMUp2')



 console.log(userUserInfo)
 console.log(orders)


  return (
    <Card style={styles.orderItem}>
      <View style={styles.summary}>
        <Text style={styles.totalAmount}>£{props.amount}</Text>
        {/* <Text style={styles.totalAmount}>{props.date}</Text> */}
        <Text style={styles.totalAmount}>t{props.items.title}</Text>


      </View>
      <Button
        color={Colors.primary}
        title={showDetails ? 'Hide Details' : 'Show Details'}
        onPress={() => {
          setShowDetails(prevState => !prevState);
        }}
      />
      {showDetails && (
        <View style={styles.detailItems}>
          {props.items.map(cartItem => (
            <CartItem
              key={cartItem.productId}
              quantity={cartItem.quantity}
              amount={cartItem.sum}
              title={cartItem.productTitle}


            />

          ))}
          <FlatList
          data={userUserInfo}
          keyExtractor={item => item.id}
          renderItem={itemData => (
            <Profile

            image={itemData.item.imageUrl}
                    title={itemData.item.namee}
                    price={itemData.item.email}
                    phonenumber={itemData.item.phonenumber}
                    adress={itemData.item.adress}
                    quantityNeeded={itemData.item.dateofbirth}
                    onSelect={() => {
                        selectItemHandler(itemData.item.id, itemData.item.namee);
                    }} >

          </Profile>
           )} />


        </View>
      )}
    </Card>    
  );

};

2
你需要展示这两个数组以及你想在这些数组中实现什么。 - Sunil Lama
@SunilLama 我添加了数组。 - jana
1
目前这基本上是值比较,UserInfo.ownerId===Order.ownerId - Sunil Lama
@SunilLama 感谢您的回复。我想过滤数组,只显示那些用户UserInfo ho订单。这样写对吗? const newu = userUserInfo.ownerId === orders.ownerId 这将仅返回true而不是过滤数组。 - jana
@EugenSunic 你知道这是一个保证吗?也许这只是一个设计不良的API响应?或许那个API恰好只返回了一个数组元素?OP只显示了一个条目。我们怎么知道是否正在针对特定的内容进行过滤,或者是否还有更多内容呢?这就是我的问题所在,需要得到明确详细的信息,了解OP正在处理什么以及他们期望的结果是什么。 - Drew Reese
显示剩余2条评论
1个回答

2

使用组合的 filtersome 数组方法。

这里是一个例子:

const userInfo = [{
  "ownerId": "XS7ARDt5C8hKtQyTSrPh9oLKMUp2"
}]

const order = [{
  "ownerId": "XS7ARDt5C8hKtQyTSrPh9oLKMUp2",
}]


const res = userInfo.filter(({
  ownerId
}) => order.some(x => x.ownerId === ownerId));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接