繁体   English   中英

如何过滤仅由用户购买的数组

[英]How to filter array with only purchases made by user

我正在研究 function ,它将返回用户购买的所有商品的总和。

export async function getBalance(asd) {
  const response = await api.get("/compras")
  const { data } = response

  // customerSuccess.filter(({ id }) => !customerSuccessAway.includes(id))

  const userPurchases = data.map((item) => item.userId.includes(asd))
  // const userPurchases = data.filter(({ userId }) => !asd.includes(userId))
  console.log(userPurchases)
}

getBalance(id) 接收登录用户的 ID。它的类型是数字,所以我不能使用过滤器方法过滤将在 api 调用中返回的数组。

api 的响应是包含“值”和“用户 ID”的对象数组。 我想要的是比较 function 收到的 ID 并检查此 ID 是否进行了任何购买(将 ID 与用户 ID 进行比较)并返回其购买的“价值”总和。 有谁知道如何做到这一点? 我想过使用 map 或减少,但无法解决=(

api 响应: api响应

您可以使用Array.prototype.filter过滤购买,然后使用Array.prototype.reduce计算购买值的总和。

const userPurchases = data
  .filter((purchase) => purchase.userId === asd)
  .reduce((sum, purchase) => sum + purchase.value, 0)

还有一个简洁的版本(虽然比第一个可读性差):

const userPurchases = data.reduce(
  (sum, purchase) => (purchase.userId === asd ? sum + purchase.value : sum),
  0
)

试试这个

customerSuccess.filter((item) => item.userId === asd

尝试这个:

// get all the items from the user with the specific id
const filtered = data.filter((item) => item.userId === asd)
// sum all the values for user with the specific id
const totalValue = filtered.reduce((a, b)=>{return a + b.value} ,0)
console.log(totalValue) 
``

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM