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

ค้นหาดัชนีมัธยฐานของอาร์เรย์ใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ arr ซึ่งแทนตำแหน่งของดาวเคราะห์น้อยต่างๆ ในพื้นที่หนึ่งมิติ

สำหรับดาวเคราะห์น้อยแต่ละดวง ค่าสัมบูรณ์แสดงถึงขนาดของมัน และเครื่องหมายแสดงถึงทิศทางของมัน (ความหมายเชิงบวก ด้านขวา ความหมายเชิงลบ ด้านซ้าย) ดาวเคราะห์น้อยแต่ละดวงเคลื่อนที่ด้วยความเร็วเท่ากัน

หน้าที่ของเราควรจะค้นหาสถานะของดาวเคราะห์น้อยหลังจากการชนกันทั้งหมด หากดาวเคราะห์น้อยสองดวงมาบรรจบกัน ดาวเคราะห์น้อยดวงนั้นก็จะระเบิด ถ้าทั้งคู่มีขนาดเท่ากันทั้งคู่จะระเบิด ดาวเคราะห์น้อยสองดวงที่เคลื่อนที่ไปในทิศทางเดียวกันจะไม่มีวันมาบรรจบกัน

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

ป้อนข้อมูล

const arr = [1, 7, 3, 6, 5, 6];

ผลผลิต

const output = 3;

คำอธิบายผลลัพธ์

ผลรวมของตัวเลขทางด้านซ้ายของดัชนี 3 (nums[3] =6) เท่ากับผลรวมของตัวเลขทางด้านขวาของดัชนี 3

นอกจากนี้ 3 เป็นดัชนีแรกที่เกิดสิ่งนี้ขึ้น

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [1, 7, 3, 6, 5, 6];
const medianIndex = (arr = []) => {
   let sum = arr.reduce((acc, num) => acc + num, 0)
   let currentSum = 0
   for (let i = 0; i < arr.length; i++) {
      currentSum += (arr[i - 1] || 0)
      sum -= arr[i]
      if (currentSum === sum) {
         return i
      }
   }
   return -1
}
console.log(medianIndex(arr));

ผลลัพธ์

3