JavaScript分别计算奇数索引和偶数索引元素的和,并返回它们的绝对差


对于给定的元素列表,编写一个 JavaScript 程序来查找其奇数和偶数索引元素的和,然后计算它们之间的差。

为了解决这个问题,我们将首先分离奇数索引和偶数索引元素。分离后,分别找到它们的和并将其存储在不同的变量中。现在,我们将计算这些和之间的差以获得所需的结果。

示例场景

Input: list = [11, 21, 31, 41, 51, 61];
Output: difference = 30 

这里,奇数索引项为 [21, 41, 61],其和为 123。偶数索引项为 [11, 31, 51],其和为 93。如果计算这两个和之间的差,则得到 30。

使用 for 循环

在这种方法中,请按照以下步骤操作:

  • 初始化两个不同的变量来存储奇数索引和偶数索引元素的和。
  • 遍历给定的数组并检查当前索引是奇数还是偶数。
  • 如果索引为偶数,则将其添加到存储偶数索引元素和的变量中。
  • 如果索引为奇数,则将其添加到存储奇数索引元素和的变量中。
  • 循环结束后,使用 Math.abs() 方法计算差值。

示例

以下 JavaScript 程序演示了如何查找奇数和偶数索引元素的和并计算它们的差。

// Function to get the absolute difference
function calculateDifference(arr) {
  let oddSum = 0;
   let evenSum = 0;

   for (let i = 0; i < arr.length; i++) {
      if (i % 2 === 0) {
         // Even-indexed element
         evenSum += arr[i];
      } else {
         // Odd-indexed element
         oddSum += arr[i];
      }
   }

   return Math.abs(oddSum - evenSum);
}
// creating array to store elements
const array = [11, 21, 31, 41, 51, 61];
// method call
const absoluteDifference = calculateDifference(array);
console.log('difference = ',absoluteDifference);

执行代码后,将得到以下输出:

difference =  30

该解决方案的时间复杂度O(n),其中 n 是输入数组的长度。该解决方案的空间复杂度O(1),这意味着代码需要恒定的额外内存。

使用 reduce() 方法

JavaScript 中的Array.reduce()方法接受一个 reducer 函数和一个可选的初始值,并在减少指定数组后返回结果。在这里,我们将传递累加器(表示函数先前返回的值)、数组的当前值和当前索引到 reducer 函数。

当 reduce() 方法遍历数组时,它将检查每个元素的索引。如果索引为偶数,则它将值添加到累加器的 even 属性中,否则添加到 odd 属性中。最后,我们将获得偶数索引和奇数索引元素的和之间的绝对差。

示例

在此 JavaScript 程序中,我们使用 reduce() 方法来计算偶数索引和奇数索引元素的和之间的差。

function calculateDifference(arr) {
    const sums = arr.reduce((accm, cur_val, index) => {
        if (index % 2 === 0) {
            accm.evenSum += cur_val;
        } else {
            accm.oddSum += cur_val;
        }
        return accm;
    }, { oddSum: 0, evenSum: 0 });

    return Math.abs(sums.evenSum - sums.oddSum);
}

const array = [74, 23, 61, 34, 62, 60];
const absoluteDifference = calculateDifference(array);
console.log('difference = ',absoluteDifference);

运行此代码后,您将获得以下结果:

difference =  80

更新于: 2024年9月30日

1K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.