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