巢狀陣列的權重總和(JavaScript)


問題

我們需要編寫一個 JavaScript 函式,它只接收一個巢狀陣列 arr(可以巢狀到任何級別)作為唯一的引數。

此函式應該計算巢狀陣列的加權和並返回該和。

計算巢狀和時,我們將特定元素乘以它的巢狀級別,並遍歷整個陣列加起來。

例如,如果輸入函式的是 -

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

那麼輸出應該是 -

const output = 46;

輸出說明

和將這樣計算 -

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

示例

程式碼將是 -

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));

輸出

控制檯中的輸出將是 -

46

更新於: 19-Mar-2021

429 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

立刻開始
廣告