ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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']