簡體   English   中英

使用 JavaScript,如何在子 object 中使用多個條件過濾對象數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM