เราต้องเขียนฟังก์ชัน reverseSum() ที่รับสองอาร์เรย์ของตัวเลข คือ first และ second และคืนค่าอาร์เรย์ใหม่ที่มี:
- ผลรวมขององค์ประกอบแรกของ first และองค์ประกอบสุดท้ายของ second เป็นองค์ประกอบแรก
- ผลรวมขององค์ประกอบที่สองของ first และองค์ประกอบที่สองจากท้ายของ second และไปเรื่อยๆ
เมื่ออาร์เรย์ใดอาร์เรย์หนึ่งหมดองค์ประกอบก่อนอีกอัน เราแค่ push องค์ประกอบที่เหลือทั้งหมดเข้าไปในอาร์เรย์ มาเขียนโค้ดกัน:
ตัวอย่างโค้ด
const first = [23, 5, 7, 2, 34, 7, 8];
const second = [2, 4, 21, 4, 6, 7, 56, 23, 32, 12];
const reverseSum = (first, second) => {
const sumArray = [];
let i, j, k;
for (i = 0, j = second.length - 1, k = 0; i < first.length && j >= 0; i++, j--, k++) {
sumArray[k] = first[i] + second[j];
}
while (i < first.length) {
sumArray[k] = first[i];
k++;
i++;
}
while (j >= 0) {
sumArray[k] = second[j];
k++;
j--;
}
return sumArray;
};
console.log(reverseSum(first, second));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็นดังนี้:
[35, 37, 30, 58, 41, 13, 12, 21, 4, 2]
ลองดูว่าตัวเลข 35 มายังไง คือ ผลรวมขององค์ประกอบแรกของ first และสุดท้ายของ second:
23 (first ของ first) + 12 (last ของ second) = 35