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