首頁 > 資料庫 > mysql教程 > 如何在兩個 JavaScript 陣列上執行 SQL 樣式的內連線?

如何在兩個 JavaScript 陣列上執行 SQL 樣式的內連線?

Barbara Streisand
發布: 2024-12-30 13:55:11
原創
156 人瀏覽過

How Can I Perform an SQL-Style Inner Join on Two JavaScript Arrays?

使用類別SQL 語法連接JavaScript 陣列

問題:

您的目標是以類似於連接資料庫中的表的方式「連接」這些數組,建立一個包含具有id的物件的新數組,

解決方案:

JavaScript提供了一種有效的方法來執行內連接使用以下步驟建立陣列:

  1. 定義一個內連接函數:

    建立一個名為innerJoin的函數,它接受三個參數:兩個數組join、xs 和ys,以及一個選擇器函數sel,它指定要包含在join中的屬性array.

  2. 笛卡爾積歸約:

    使用reduce迭代xs中的每個元素,並且對於每個元素,迭代xs中的每個元素是的。這有效地創建了兩個數組的笛卡爾積。

  3. 過濾與選擇:

    在巢狀循環內,將選擇器函數 sel 應用到每對元素。選擇器函數應該傳回一個具有所需屬性的新物件。如果選擇器函數傳回 false 值,則該對將被丟棄。

  4. 連接結果:

    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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板