> 데이터 베이스 > MySQL 튜토리얼 > 두 개의 JavaScript 배열에서 SQL과 유사한 JOIN을 수행하는 방법은 무엇입니까?

두 개의 JavaScript 배열에서 SQL과 유사한 JOIN을 수행하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-29 04:57:11
원래의
652명이 탐색했습니다.

How to Perform an SQL-like JOIN on Two JavaScript Arrays?

SQL JOIN과 유사하게 공통 키를 기반으로 두 개의 JavaScript 배열을 결합하는 방법

JavaScript에서 데이터를 처리할 때 다음이 가능합니다. 관련 정보가 포함된 여러 배열이 있고 이를 공통 속성을 기반으로 결합하려는 상황이 발생합니다. 이러한 맥락에서 SQL JOIN 작업은 여러 테이블의 데이터를 병합하는 데 유용할 수 있으며 배열 조작 기술을 사용하여 JavaScript에서 유사한 기능을 달성할 수 있습니다.

userProfiles와 질문이라는 두 개의 배열이 있다고 가정해 보겠습니다. userProfiles에는 id 및 name 속성이 있는 개체가 포함되어 있고, questions에는 id, text 및 CreateBy 속성이 있는 개체가 포함되어 있습니다. 문제의 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 함수는 기본적으로 두 배열의 데카르트 곱을 수행합니다. , 각 개체 쌍에 대해 질문의 CreateBy 속성이 userProfiles의 id 속성과 일치하는지 확인합니다. 일치하는 경우 원하는 속성을 가진 개체를 반환합니다.

결과 결과 배열에는 다음 형식의 개체가 포함됩니다.

{ id, text, name }
로그인 후 복사

이 접근 방식을 사용하면 여러 배열의 데이터를 결합할 수 있습니다. SQL JOIN 작업과 유사한 공통 키를 기반으로 합니다. JavaScript의 배열 조작 기능을 활용하면 애플리케이션에 대한 효율적이고 유연한 데이터 변환을 달성할 수 있습니다.

위 내용은 두 개의 JavaScript 배열에서 SQL과 유사한 JOIN을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿