ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลขสองอาร์เรย์ ได้แก่ arr1 และ arr2 เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์ที่สอง
ผลรวมขององค์ประกอบใน arr1 และ arr2 ต่างกัน ฟังก์ชันของเราควรเลือกหนึ่งองค์ประกอบจากอาร์เรย์แรกและผลักลงในอาร์เรย์ที่สอง และเลือกหนึ่งองค์ประกอบจากอาร์เรย์ที่สองและผลักลงในอาร์เรย์แรกเพื่อให้ผลรวมขององค์ประกอบของอาร์เรย์ทั้งสองมีค่าเท่ากัน เราควรคืนค่าอาร์เรย์ขององค์ประกอบทั้งสองนี้
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
const arr1 = [1, 2, 5]; const arr2 = [2, 4];
ผลผลิต
const output = [5, 4];
คำอธิบายผลลัพธ์
เพราะถ้าเราลบ 5 ออกจาก arr1 แล้วผลักไปที่ arr2 และลบ 4 ออกจาก arr2 แล้วผลักไปที่ arr1 ผลรวมของอาร์เรย์ทั้งสองจะเท่ากัน (7)
ต่อไปนี้เป็นรหัส:
ตัวอย่าง
const arr1 = [1, 2, 5]; const arr2 = [2, 4]; const balanceArrays = (arr1 = [], arr2 = []) => { const sumA = arr1.reduce((acc, v) => acc + v, 0) const sumB = arr2.reduce((acc, v) => acc + v, 0) const difference = (sumA + sumB) / 2 - sumA const map = arr2.reduce((acc, v) => { acc[v] = true return acc }, {}) for(let i = 0; i < arr1.length; i++) { if(map[arr1[i] + difference] === true) { return [arr1[i], arr1[i] + difference] } } return [] }; console.log(balanceArrays(arr1, arr2));
ผลลัพธ์
[5, 4]