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