Computer >> Máy Tính >  >> Lập trình >> Javascript

Tất cả các tổ hợp tổng cho mảng trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng Numbers làm đối số thứ nhất và một số, chẳng hạn n là đối số thứ hai. Số n sẽ luôn nhỏ hơn hoặc bằng độ dài của mảng.

Hàm của chúng ta sẽ trả về một mảng gồm tổng tất cả các phần tử của tất cả các mảng con có thể có độ dài n từ mảng ban đầu.

Ví dụ:Nếu đầu vào là -

const arr = [2, 6, 4];
const n = 2;

Sau đó, đầu ra phải là -

const output = [8, 10, 6];

Ví dụ

Mã cho điều này sẽ là -

const arr = [2, 6, 4];
const n = 2;
const buildCombinations = (arr, num) => {
   const res = [];
   let temp, i, j, max = 1 << arr.length;
   for(i = 0; i < max; i++){
      temp = [];
      for(j = 0; j < arr.length; j++){
         if (i & 1 << j){
            temp.push(arr[j]);
         };
      };
      if(temp.length === num){
         res.push(temp.reduce(function (a, b) { return a + b; }));
      };
   };
   return res;
}
console.log(buildCombinations(arr, n));

Đầu ra

Đầu ra trong bảng điều khiển -

[ 8, 6, 10 ]