Допустим, у нас есть массив строк, и каждая строка имеет либо ./
, либо ../
, где ./
означает вход на следующий уровень текущей папки, а ../
означает возврат к папке верхнего уровня,Таким образом, массив будет что-то вроде [./, ../, ../, ./]
.И мы хотим проверить, вернемся ли мы в конечном итоге к исходной папке.
Я знаю, что эта проблема довольно проста.Я попытался выполнить итерацию массива, и для каждого элемента я удаляю последний символ в строке, т. Е. '/', Используя str.slice(0,-1)
, тогда я считаю каждый '..' и '.'чтобы увидеть, равны ли они.
Однако я чувствую, что мой код хрупок, и очень хотел бы посмотреть, как кто-то может использовать регулярные выражения для решения этой проблемы.
let numOfGoingDeeper = 0;
let numOfGoingBack = 0;
arr.forEach(str => {
if(str.slice(0,-1) === '..') {
numOfGoingBack++;
} else if(str.slice(0,-1) === '.') {
numOfGoingDeeper++;
}
}
return numOfGoingDeeper === numOfGoingBack
))