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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP