在 JavaScript 中分别计算每个子数组的平均值,然后返回所有平均值的总和

javascriptweb developmentfront end technologyobject oriented programming

在给定的问题陈述中,我们被要求分别计算每个子数组的平均值,然后借助 JavaScript 功能返回所有平均值的总和。当我们讨论子数组的平均值时,我们可以使用 JavaScript 的 Reduce 方法。

JavaScript 中的 Reduce() 方法是什么?

让我们了解 JavaScript 中 Reduce 函数的工作原理。

在 JavaScript 中,Reduce 方法用于通过迭代数组的每个项目将数组缩减为单个值。并通过应用根据每次迭代的结果累积值的回调函数。Reduce 方法基本上采用两个参数。一个累加器和一个当前值。

累加器是上一次迭代的累积值或传递给 Reducer 函数的初始值。当前值是数组中正在处理的当前元素。

以下是在 JavaScript 中定义列表的语法:−

const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((acc, val) => acc + val, 0);
console.log(sum); 

输出

15

给定问题的逻辑

在给定的问题陈述中,我们将找到每个子数组的平均值,然后返回所有平均值的总和。为了实现该算法,我们需要通过遍历数组并使用 Reduce 方法获取每个子数组中元素的总和来分别计算每个子数组的平均值,然后将其除以子数组的长度。

算法

步骤 1 − 步骤 1:声明一个名为 sumOfAverages 的函数,以元素子数组作为输入。

步骤 2 − 步骤 1:声明一个名为 sumOfAverages 的函数,以元素子数组作为输入。

步骤 3 − 现在必须定义一个 for 循环以遍历子数组的每个元素。使用循环内的 Reduce 方法获取子数组中每个元素的平均值。

步骤 4 − 此步骤将计算所有平均值的总和。

步骤 5 − 在最后一步中,将结果返回为总和。

示例

// 声明一个用于获取平均值的函数
function sumOfAverages(arr) { 
  var sum = 0; 
  for (let subArr of arr) {
    var avg = subArr.reduce((acc, val) => acc + val) / subArr.length;
    sum += avg;
  }
  return sum;
}
const arr = [[1, 2, 3], [4, 5], [6, 7, 8, 9]];
const result = sumOfAverages(arr);
console.log(result);

输出

14

复杂性

每当我们谈论时间复杂性时,它都是以执行特定函数以获得结果所花费的时间来衡量的。

在我们的例子中,我们最初在函数中使用了一个 for 循环来遍历数组的长度。因此,for 循环所花费的时间为 O(n^2) 时间来迭代数组中的每个子数组。它还使用 Reduce 函数来获取每个数组中元素的总和。Reduce 函数本身需要 O(n) 时间来执行。其中 n 是子数组的长度。

如果我们谈论空间复杂性,那么这个函数将占用 O1) 内存空间,因为该函数使用恒定数量的额外内存来存储总和和平均值。

结论

在 JavaScript 中计算子数组的平均值和总和的最直接和可靠的方法。正如我们在上面的实现中看到的,函数 sumOfAverages 分别计算每个子数组的平均值并返回所有平均值的总和。它的时间复杂度为 O(n^2),空间复杂度为 O(1)。此函数可能适用于小型输入数组,但由于其时间复杂度高,对于大型输入数组可能效率不高。


相关文章