ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์เดียว
ฟังก์ชันต้องเลือกและคืนค่าดัชนีหนึ่งจากอาร์เรย์ ที่ทำให้ผลรวมขององค์ประกอบทางด้านซ้ายเท่ากับผลรวมขององค์ประกอบทางด้านขวา หากไม่มีดัชนีดังกล่าว เราควรคืนค่า -1
ตัวอย่างเช่น หากอินพุตคือ
อินพุต
const arr = [1, 2, 3, 4, 3, 2, 1];
เอาต์พุต
const output = 3;
คำอธิบายเอาต์พุต
เพราะผลรวมขององค์ประกอบทั้งสองข้างของดัชนี 3 เท่ากัน (6)
ตัวอย่างโค้ด
const arr = [1, 2, 3, 4, 3, 2, 1];
const balancingIndex = (arr = []) => {
const findSum = arr => arr.reduce((acc, x) => acc + x, 0);
for (let i = 0; i < arr.length; i++) {
const leftSum = findSum(arr.slice(0, i));
const rightSum = findSum(arr.slice(i + 1));
if (leftSum === rightSum) {
return i;
};
};
return -1;
};
console.log(balancingIndex(arr));
ผลลัพธ์
3