Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การสมดุลสองอาร์เรย์ใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน 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]