Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Mô tả vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào mảng lồng nhau arr (lồng bất kỳ cấp độ) làm đối số duy nhất.

Hàm tính tổng có trọng số của mảng lồng nhau và trả về tổng đó. Cách tính: nhân mỗi phần tử với cấp độ lồng của nó và cộng dồn qua toàn mảng.

Ví dụ, nếu đầu vào là:

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

Thì đầu ra nên là:

const output = 46;

Giải thích đầu ra

Tổng được tính như sau:

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

Ví dụ minh họa

Mã thực hiện (đệ quy):

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

Kết quả trong console sẽ là:

46