Функция фильтра Lodash не работает с регулярным выражением - PullRequest
0 голосов
/ 29 марта 2019

Я получил проблему, пытаясь уменьшить методом _.filter список (действительных) идентификаторов. Цель состоит в том, чтобы создать новый идентификатор в соответствии с последним значением числа, указанного в конце каждой строки (string-string- [lastNumber + 1]).

Потому что я не хочу получать неверный идентификатор. Я просто попытался отфильтровать эти идентификаторы, используя метод regexp внутри _.filter.

Однако результат выглядит очень странно. Несмотря на то, что из этих строк прошло онлайн-тестирование регулярного выражения.

REPL тестирование

var data = [ 
  'offstreetparking-estepona-1',
  'offstreetparking-estepona-2',
  'offstreetparking-estepona-3',
  'offstreetparking-estepona-04', // Should nor be included (not 04)
  'offstreetparking-estepona-4',
  'offstreetparking-estepona-5'
]

var patt = /([A-Za-z]+)-([A-Za-z]+)-([1-9]+)/g;

_.filter(data, d => patt.test(d));


// Result from lodash => [
"offstreetparking-estepona-1", 
"offstreetparking-estepona-3", 
"offstreetparking-estepona-4"
]

// Missing => 2 and 5 ids!

Я не знаю, почему некоторые из действительных идентификаторов не проходят тест внутри функции _.filter и возвращаются как элемент массива.

Все они были протестированы независимо и отлично работают: (

Неправильное поведение, что lodash вернул только значения шансов ...

Любые другие решения приветствуются, но я хочу знать, почему lodash не работает должным образом.

Большое спасибо!

...