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