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.