Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

목표 값으로 합산될 수 있는 배열에서 가능한 숫자 찾기 JavaScript

<시간/>

숫자 배열을 첫 번째 인수로, 단일 숫자를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

함수는 추가될 때 배열의 두 번째 인수로 지정된 합계를 제공하는 배열에서 이러한 요소를 선택해야 합니다. 함수는 추가될 때 필요한 합계를 제공하는 모든 숫자 하위 배열의 배열을 반환해야 합니다.

순서는 중요하지 않으며 필요한 경우 합계를 생성하기 위해 하나의 숫자를 두 번 이상 사용할 수 있습니다.

예를 들어 -

입력 배열과 합이 -

인 경우
 const arr =[14, 6, 10]; const 합계 =40;

그러면 출력은 다음과 같아야 합니다. -

상수 출력 =[ [ 14, 14, 6, 6 ], [ 14, 6, 10, 10 ], [ 6, 6, 6, 6, 6, 10 ], [ 10, 10, 10, 10 ] ];

예시

 const arr =[14, 6, 10]; const 합계 =40; const findSum =(arr, 합계) => { const res =[]; const 검색 =(인덱스, 부분 =[]) => { const s =part.reduce((a, b) => a + b, 0); if (s ===sum){ res.push(part) }; if (s>=합계 || 인덱스>=arr.length){ 반환; }; 검색(인덱스, 부분.concat(arr[인덱스])); 검색(인덱스 + 1, 부분); }; 검색(0); 반환 res;}console.log(findSum(arr, 합계));

출력

이것은 다음과 같은 출력을 생성합니다 -

[ [ 14, 14, 6, 6 ], [ 14, 6, 10, 10 ], [ 6, 6, 6, 6, 6, 10 ], [ 10, 10, 10, 10 ]]