[英]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 或减少,但无法解决=(
您可以使用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.