使用類別SQL 語法連接JavaScript 陣列
問題:
您的目標是以類似於連接資料庫中的表的方式「連接」這些數組,建立一個包含具有id的物件的新數組,
解決方案:
JavaScript提供了一種有效的方法來執行內連接使用以下步驟建立陣列:
定義一個內連接函數:
建立一個名為innerJoin的函數,它接受三個參數:兩個數組join、xs 和ys,以及一個選擇器函數sel,它指定要包含在join中的屬性array.
笛卡爾積歸約:
使用reduce迭代xs中的每個元素,並且對於每個元素,迭代xs中的每個元素是的。這有效地創建了兩個數組的笛卡爾積。
過濾與選擇:
在巢狀循環內,將選擇器函數 sel 應用到每對元素。選擇器函數應該傳回一個具有所需屬性的新物件。如果選擇器函數傳回 false 值,則該對將被丟棄。
連接結果:
innerJoin 函數傳回一個數組,該數組是連接選擇器傳回的所有物件的結果函數。
實作:
這裡使用下列資料進行示範集:
const userProfiles = [ {id: 1, name: "Ashok"}, {id: 2, name: "Amit"}, {id: 3, name: "Rajeev"}, ]; const questions = [ {id: 1, text: "text1", createdBy: 2}, {id: 2, text: "text2", createdBy: 2}, {id: 3, text: "text3", createdBy: 1}, {id: 4, text: "text4", createdBy: 2}, {id: 5, text: "text5", createdBy: 3}, {id: 6, text: "text6", createdBy: 3}, ];
const result = innerJoin(userProfiles, questions, ({id: uid, name}, {id, text, createdBy}) => createdBy === uid && {id, text, name});
輸出:
console.log(result); // Outputs: [ {id: 1, text: "text3", name: "Ashok"}, {id: 2, text: "text1", name: "Amit"}, {id: 2, text: "text2", name: "Amit"}, {id: 2, text: "text4", name: "Amit"}, {id: 3, text: "text5", name: "Rajeev"}, {id: 3, text: "text6", name: "Rajeev"}, ]
此輸出顯示innerJoin函數已成功連接兩個數組,選擇id,text ,並命名屬性。
以上是如何在兩個 JavaScript 陣列上執行 SQL 樣式的內連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!