簡體   English   中英

Javascript 中的內部聯接

[英]INNER JOIN in Javascript

 const products = [{ id: 5, productName: "Logitech Mouse", unitprice: 35 }, { id: 6, productName: "Logitech Keyboard", unitprice: 40 } ]; const cart = [{ id: 101, userId: 3, productId: 5, quantity: 2 }, { id: 102, userId: 3, productId: 6, quantity: 1 } ];

使用對象中的這些數據,我如何將購物車的productId內部連接到 product 的id 這樣輸出將是:

羅技鼠標, 35, 2 羅技鍵盤, 40, 1

我會要求您先嘗試自己,然后再尋求幫助,以便以最佳方式從社區獲得幫助。

您可以嘗試使用.map()find()進行解構賦值

 const products = [{ id: 5, productName: "Logitech Mouse", unitprice: 35 }, { id: 6, productName: "Logitech Keyboard", unitprice: 40 } ]; const cart = [{ id: 101, userId: 3, productId: 5, quantity: 2 }, { id: 102, userId: 3, productId: 6, quantity: 1 } ]; var res = products.map(({id,...rest}) => { var cartObj = cart.find(c => c.productId == id); rest.quantity = (cartObj != undefined && 'quantity' in cartObj) ? cartObj.quantity : 'N/A'; return rest; }); console.log(res);

您可以采用更像 SQL 的方法為產品創建哈希表,並使用哈希表中對象的所需屬性和quantity映射購物車

結果,您將獲得具有產品名稱、單價和數量的新對象。

 const select = (keys, object) => Object.fromEntries(keys.map(k => [k, object[k]])), products = [{ id: 5, productName: "Logitech Mouse", unitprice: 35 }, { id: 6, productName: "Logitech Keyboard", unitprice: 40 }], cart = [{ id: 101, userId: 3, productId: 5, quantity: 2 }, { id: 102, userId: 3, productId: 6, quantity: 1 }], productsMap = products.reduce((r, o) => (r[o.id] = o, r), {}), result = cart.map(({ productId, quantity }) => ({ ...select(['productName', 'unitprice'], productsMap[productId]), quantity })); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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