สร้างขึ้น
สมมติว่าเรามีอาร์เรย์ต่อไปนี้ใน JavaScript -
const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];
หากเราพล็อตจุดของอาร์เรย์นี้บนแกน y โดยแต่ละจุดที่อยู่ติดกันอยู่ห่างจากแกน onx เป็นระยะทางหน่วย กราฟจะเป็นดังนี้ -

กราฟนี้แสดงให้เห็นชัดเจนว่ามีจุดสูงสุด (สูงสุด) ในพื้นที่สองรายการในอาร์เรย์นี้ที่ดัชนี 3 และ 7 โดยมีค่า 7 และ 4 ตามลำดับ
ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว
ฟังก์ชันของเราควรจะส่งคืนอ็อบเจ็กต์ที่มีสองคุณสมบัติ คือ ค่าสูงสุด และตำแหน่ง
คุณสมบัติทั้งสองนี้จะเป็นอาร์เรย์ และอาร์เรย์ maxima จะมีค่าของ localmaximas ในอาร์เรย์ และอาร์เรย์ตำแหน่งจะมีดัชนีที่เกี่ยวข้อง
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
ดังนั้น สำหรับอาร์เรย์ข้างต้น ผลลัพธ์ควรมีลักษณะดังนี้ −
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 ] }