Как пролить строку на основе двух условий javascript регулярное выражение - PullRequest
0 голосов
/ 12 апреля 2020

Я изо всех сил стараюсь разделить нижнюю переменную чистым способом

var x = "3/13/20,2179,5232,17660,3/14/20,2727,6391,21157,3/15/20,3499,7798,24747,3/16/20,4632,9942,27980"

Приведенная выше строка отделена датой и соответствующим значением. Результат метода split должен выглядеть следующим образом

arr[0] =  ['3/13/20','2179','5232','17660']
arr[1] =  ['3/14/20','2727','6391','21157']

В поисках шаблона регулярных выражений, который может принести вышеуказанный результат

Я знаю, что это не сработает, есть ли встроенная функция, доступная для достижения этой цели

.split("/");
.split(",");

Ответы [ 2 ]

3 голосов
/ 12 апреля 2020

Разделите запятыми, за которыми следует \d+\/ (начало даты), а затем разделите запятыми на каждом элементе:

var x = '3/13/20,2179,5232,17660,3/14/20,2727,6391,21157,3/15/20,3499,7798,24747,3/16/20,4632,9942,27980';

const arr = x
  .split(/,(?=\d+\/)/)
  .map(str => str.split(','));
console.log(arr);
1 голос
/ 12 апреля 2020

Вы можете просто map и затем индекс следующих элементов - отрицая любое регулярное выражение ... что предполагает, что данные всегда являются датой, за которой следуют три значения. например,

const x = "3/13/20,2179,5232,17660,3/14/20,2727,6391,21157,3/15/20,3499,7798,24747,3/16/20,4632,9942,27980";

const b = x.split(",")
    .map((e, i, a) => !(i % 4) && [e, a[i + 1], a[i + 2], a[i + 3]])
    .filter(Boolean);

console.log(b);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...