Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การหาจุดพีคและตำแหน่งทั้งหมดในอาร์เรย์ใน JavaScript


สร้างขึ้น

สมมติว่าเรามีอาร์เรย์ต่อไปนี้ใน JavaScript -

const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];

หากเราพล็อตจุดของอาร์เรย์นี้บนแกน y โดยแต่ละจุดที่อยู่ติดกันอยู่ห่างจากแกน onx เป็นระยะทางหน่วย กราฟจะเป็นดังนี้ -

การหาจุดพีคและตำแหน่งทั้งหมดในอาร์เรย์ใน JavaScript

กราฟนี้แสดงให้เห็นชัดเจนว่ามีจุดสูงสุด (สูงสุด) ในพื้นที่สองรายการในอาร์เรย์นี้ที่ดัชนี 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 ] }