如何基於公共鍵組合兩個JavaScript 數組,類似於SQL JOIN
在JavaScript 中處理資料時,您可以遇到這樣的情況:您有多個包含相關資訊的數組,並且您希望根據公共屬性將它們組合起來。在這種情況下,SQL JOIN 操作對於合併來自多個資料表的資料非常有用,我們可以使用陣列操作技術在 JavaScript 中實現類似的功能。
假設我們有兩個陣列:userProfiles 和 questions。 userProfiles 包含具有 id 和 name 屬性的對象,而 questions 則包含具有 id、text 和createdBy 屬性的物件。問題中的 createBy 屬性對應於 userProfiles 中的 id 值。
我們的目標是「連接」這些數組以建立一個新數組,其中包含具有 id、text 和 name 屬性的物件。在 SQL 中,此操作將由以下查詢表示:
SELECT u.id, q.text, u.name FROM userProfiles u JOIN questions q ON q.createdBy=u.id
在 JavaScript 中,我們可以使用 reduce() 和 concat() 方法來實現聯結。下面是一個使用innerJoin函數的範例:
const innerJoin = (xs, ys, sel) => xs.reduce((zs, x) => ys.reduce((zs, y) => // cartesian product - all combinations zs.concat(sel(x, y) || []), // filter out the rows and columns you want zs), []);
使用這個函數,我們可以執行以下連接:
const result = innerJoin(userProfiles, questions, ({id: uid, name}, {id, text, createdBy}) => createdBy === uid && {id, text, name});
這個innerJoin函數本質上執行兩個陣列的笛卡爾積,並且對於每對對象,它檢查問題中的createdBy屬性是否與userProfiles中的id屬性匹配。如果它們匹配,它將傳回具有所需屬性的物件。
產生的結果陣列將包含以下格式的物件:
{ id, text, name }
此方法允許您組合來自多個陣列的資料基於公共鍵,類似於 SQL JOIN 操作。透過利用 JavaScript 的陣列操作功能,您可以為您的應用程式實現高效、靈活的資料轉換。
以上是如何在兩個 JavaScript 陣列上執行類似 SQL 的 JOIN?的詳細內容。更多資訊請關注PHP中文網其他相關文章!