Vấn đề
Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng các ký tự đơn, arr, làm đối số đầu tiên và duy nhất.
Mảng chỉ có thể chứa 4 ký tự, chúng là -
- ‘N’ → là viết tắt của hướng Bắc
- ‘S’ → là viết tắt của hướng Nam
- ‘W’ → là viết tắt của hướng Tây
- ‘E’ → là viết tắt của hướng Đông
Mỗi ký tự chỉ định một bước di chuyển của đơn vị khoảng cách theo hướng cụ thể đó. Và nếu ở bất kỳ vị trí nào trong mảng, hai hướng ngược nhau, [(‘S’ và ‘N’) hoặc (‘E’ và ‘W’)] xuất hiện liền kề, chúng sẽ loại bỏ chuyển động của nhau. Do đó, hàm của chúng ta phải tìm hướng di chuyển kết quả của toàn bộ mảng.
Ví dụ:nếu đầu vào của hàm là -
Đầu vào
const arr = ['N', 'S', 'S', 'E', 'W', 'N', 'W'];
Đầu ra
const output = 'W';
Giải thích đầu ra
‘N’ và ‘S’ sẽ hủy nhau ‘E’ và ‘W’ sẽ hủy nhau và cuối cùng ‘N’ và ‘S’ lại hủy nhau để lại chỉ còn lại ‘W’.
Ví dụ
Sau đây là mã -
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));
Đầu ra
['W']