在 JavaScript 中分别计算每个子数组的第一个和第二个元素之间的差异并返回它们的差异之和

javascriptweb developmentfront end technologyobject oriented programming

在给定的问题陈述中,我们被要求分别计算每个子数组的第一个和第二个元素之间的差异,并且我们必须借助 javascript 功能返回它们的差异之和。在数组数据结构中,我们可以定义一个也可以包含子数组的数组。

什么是 JavaScript 中的子数组数组?

让我们了解 JavaScript 中列表的工作原理。

在 javascript 中,我们可以定义子数组数组或嵌套数组。子数组数组是包含一个或多个数组作为其元素的数组。主数组中的每个数组项都是一个子数组,这也可以称为嵌套数组。让我们通过例子来理解:

const array = [[1,2,3], [4,5,6], [7,8,9]];

在上面的例子中,数组是子数组的数组。每个子数组包含 2 个元素。

我们还可以使用子数组的索引和子数组内元素的索引来访问子数组的各个项。例如:要访问第二个子数组中的值 4,我们可以使用以下代码:

console.log(array[1][1]);

输出

4

我们还可以使用数组方法(如 map、reduce、forEach 等)来遍历子数组的元素。子数组的数组主要用于编程,以表示和操作二维数据,如矩阵和表。

上述问题的逻辑

在 javascript 中计算子数组元素差异的最简单方法是使用 reduce 方法和元素索引。

让我们了解给定问题的逻辑。为了计算子数组中第一个和第二个元素之间的差值,我们将声明一个变量来存储差值的总和。之后,我们将使用 for 循环遍历每个子数组。然后,我们将使用每个项目的索引计算其第二个和第一个元素之间的差值。最后,我们将使用算术运算符添加每个子数组的差值。

算法

步骤 1 - 声明一个名为 arr 的数组,其中包含整数元素的子数组。

步骤 2 - 声明子数组的最终平均值总和。

步骤 3 − 此步骤将通过获取每个子数组的索引值来计算其第二个和第一个元素之间的差异。

步骤 4 − 现在转到第三步,在此步骤中添加所有子数组的平均值。

步骤 5 − 现在将输出显示为子数组平均值的总和。

算法示例

// 定义子数组
const arr = [[1, 3], [7, 9], [11, 5]];

//计算差异及其总和
const sum = arr.reduce((acc, subArr) => {  
  const diff = subArr[1] - subArr[0];  
  return acc + diff; 
}, 0);

console.log("The sum of the differences of subarrays: ");
console.log(sum);

使用 for 循环的示例

// 定义子数组
const arr = [[1, 3], [7, 9], [11, 5]];
let sum = 0;

//计算差值及其和
for (let i = 0; i < arr.length; i++) {
    const subArr = arr[i];
    const diff = subArr[1] - subArr[0];
    sum += diff;
}
console.log("子数组差值之和: ");
console.log(sum);

输出

子数组的差值之和:
-2

时间复杂度

我们实现的代码具有 O(n) 的时间复杂度,其中 n 表示输入数组 arr 中的子数组数量。这种时间复杂度的原因是,我们只迭代每个子数组一次,并在每个子数组上执行相同的工作。我们使用数组 arr 来保存输入和固定数量的内存,用于平均值之和以及 reduce() 回调函数中的中间变量,因此整体空间复杂度也将是 O(n)。

结论

最后,在此代码中,使用 reduce 方法计算子数组中每个子数组的第一项和第二项之间的差值总和。这是在 Javascript 中解决此问题的一种高效且简单的方法。而时间和空间复杂度则是O(n)。


相关文章