ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของอักขระตัวเดียว arr เป็นอาร์กิวเมนต์แรกและตัวเดียว
อาร์เรย์สามารถมีอักขระได้เพียง 4 ตัวเท่านั้น คือ −
- ‘N’ → หมายถึงทิศเหนือ
- ‘S’ → หมายถึงทิศใต้
- ‘W’ → หมายถึงทิศตะวันตก
- ‘E’ → หมายถึงทิศตะวันออก
อักขระแต่ละตัวระบุการเคลื่อนที่ของระยะทางหน่วยไปในทิศทางนั้น และหากตำแหน่งใดในอาร์เรย์ สองทิศทางตรงข้ามกัน [('S' และ 'N') หรือ ('E' และ 'W')] ปรากฏติดกัน จะยกเลิกการเคลื่อนที่ของกันและกัน ดังนั้น ฟังก์ชันของเราจึงควรหาผลลัพธ์ทิศทางการเคลื่อนที่ของอาร์เรย์ทั้งหมด
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W'];
จากนั้นผลลัพธ์ควรเป็น −
const output = 'W';
คำอธิบายผลลัพธ์
'N' กับ 'S' จะยกเลิกกัน 'E' และ 'W' จะยกเลิกกัน และสุดท้าย 'N' และ 'S' อีกครั้งจะยกเลิกซึ่งกันและกัน เหลือเพียง 'W'
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W'];
const cancelDirections = (arr = []) => {
let str = arr.join('');
while(str.includes('NS') || str.includes('SN') || str.includes('EW')
|| str.includes('WE')){
str = str.replace('NS', '');
str = str.replace('SN', '');
str = str.replace('EW', '');
str = str.replace('WE', '');
};
return str.split('');
};
console.log(cancelDirections(arr)); ผลลัพธ์
ต่อไปนี้เป็นเอาต์พุตคอนโซล -
['W']