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

Tổng trọng số của một mảng lồng nhau trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng lồng nhau, arr (lồng vào cấp độ nào) làm đối số duy nhất.

Hàm sẽ tính toán tổng trọng số của mảng lồng nhau và trả về tổng đó.

Để tính tổng lồng nhau, chúng tôi nhân một phần tử cụ thể với mức độ lồng và cộng của nó trong toàn bộ mảng.

Ví dụ:nếu đầu vào của hàm là -

const arr = [4, 7, [6, 1, [5, 2]]];

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

const output = 46;

Giải thích đầu ra:

Tổng sẽ được tính như thế này -

(4 * 1) + ( 7 * 1) + (6 * 2) + (1 * 2) + (5 * 3) + (2 * 3) = 46

Ví dụ

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

const arr = [4, 7, [6, 1, [5, 2]]];
const findWeightedSum = (arr = [], level = 1, res = 0) => {
   for(let i = 0; i < arr.length; i++){
      if(typeof arr[i] === 'number'){
         res += (level * arr[i]);
      }else if(Array.isArray(arr[i])){
         return findWeightedSum(arr[i], level + 1, res);
      };
   };
   return res;
};
console.log(findWeightedSum(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

46