>웹 프론트엔드 >JS 튜토리얼 >JavaScript에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?

JavaScript에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-21 11:28:10122검색

How to Calculate the Cartesian Product of Multiple Arrays in JavaScript?

JavaScript의 다중 배열의 데카르트 곱

데카르트 곱 소개

수학에서 다중 집합의 데카르트 곱은 가능한 모든 집합입니다. 해당 세트의 요소를 순서대로 조합합니다. 예를 들어, 집합 [1, 2]와 [10, 20, 300]의 데카르트 곱은 { [1, 10], [1, 20], [1, 300], [2, 10], [2, 20], [2, 300] }.

구현 JavaScript

1줄 JavaScript 솔루션(2020 업데이트)

최신 JavaScript 기능을 활용하여 단 한 줄에 걸친 매우 간결한 솔루션은 다음과 같습니다.

const cartesian = (...a) => a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat())));

2줄 바닐라 자바스크립트 솔루션

2020 업데이트 이전에는 이것이 가장 짧은 바닐라 JavaScript 솔루션이었습니다:

let f = (a, b) => [].concat(...a.map(a => b.map(b => [].concat(a, b))));
let cartesian = (a, b, ...c) => b ? cartesian(f(a, b), ...c) : a;

사용 예

입력 배열을 고려하십시오:

input = [1, 2], [10, 20], [100, 200, 300]

데카르트 곱을 계산하기 위해 데카르트 함수를 호출할 수 있습니다. 함수:

const output = cartesian(...input);

출력 변수에는 예상되는 데카르트 곱이 포함됩니다.

[[1, 10, 100], [1, 10, 200], [1, 10, 300], [1, 20, 100], [1, 20, 200], [1, 20, 300], [2, 10, 100], [2, 10, 200], [2, 10, 300], [2, 20, 100], [2, 20, 200], [2, 20, 300]]

위 내용은 JavaScript에서 여러 배열의 데카르트 곱을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.