[英]Using JavaScript, how can I filter an array of objects using multiple criteria in a child object
我想得到所有退回產品“2”的客戶:
// Note that in production this array is much longer const customers = [ { "customerId": "1", "products": [ { "productId": "1", "status": "purchased" }, { "productId": "2", "status": "purchased" } ] }, { "customerId": "2", "products": [ { "productId": "1", "status": "purchased" }, { "productId": "2", "status": "returned" } ], } ] const returns = customers.filter((customer) => customer.products.some((product) => product.productId === "2" && product.status === "returned") ); console.log(returns);
我認為我使用filter
會起作用 - 但我猜 some() 不適用於多個標准? 還是我做錯了什么? 或者,還有更好的方法?
您的條件product.productId === "2" && product.status === "returned"
只匹配一個 object
如果 productId 為“2”且狀態為“returned” ,則與返回的最后一個 object 匹配。
如果您只想要 ID 為 '2' 的產品,那么它應該是product.productId === "2"
希望這是有道理的
嘗試對產品使用一些function。
const customers = [{ "customerId": "1", "products": [{ "productId": "1", "status": "purchased" }, { "productId": "2", "status": "purchased" } ] }, { "customerId": "2", "products": [{ "productId": "1", "status": "purchased" }, { "productId": "2", "status": "returned" } ], } ] const returns = customers.filter((customer) => customer.products.some((product) => product.productId === "2" && product.status === "returned")) console.log(returns);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.