在 JavaScript 中查詢陣列中的所有峰值及其位置
構建
假設我們在 JavaScript 中有以下陣列:
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
如果我們將此陣列的點繪製在 y 軸上,每個相鄰點在 x 軸上相距單位距離,則圖形如下所示:

該圖清楚地表明,此陣列中存在兩個區域性最大值(峰值),分別位於索引 3 和 7 處,其值分別為 7 和 4。
問題
我們需要編寫一個 JavaScript 函式,該函式將整數陣列 arr 作為第一個也是唯一的引數。
我們的函式應該返回一個物件,該物件包含兩個屬性,maximas 和 positions。
這兩個屬性都將是陣列,maxima 陣列將包含陣列中區域性最大值的值,而 positions 陣列將包含其對應的索引。
例如,如果函式的輸入為:
因此,對於上述陣列,輸出應如下所示:
const output = {
maximas: [7, 4],
positions: [3, 7]
};示例
以下是程式碼:
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
const findMaxima = (arr = []) => {
let positions = []
let maximas = []
for (let i = 1; i < arr.length - 1; i++) {
if (arr[i] > arr[i - 1]) {
if (arr[i] > arr[i + 1]) {
positions.push(i)
maximas.push(arr[i])
} else if (arr[i] === arr[i + 1]) {
let temp = i
while (arr[i] === arr[temp]) i++
if (arr[temp] > arr[i]) {
positions.push(temp)
maximas.push(arr[temp])
}
}
}
}
return { maximas, positions };
};
console.log(findMaxima(arr));輸出
則輸出應為:
{ maximas: [ 7, 4 ], positions: [ 3, 7 ] }
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP