Как получить первые пять значений один раз, используя регулярное выражение в JavaScript? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь вернуть первые пять значений контрольной точки из моего объекта.Я, во-первых, получаю все ключи, которые содержат контрольную точку, проверяя на соответствие регулярному выражению.Я получаю неправильные значения, и я знаю, что это из-за регулярного выражения, но не знаю, как это исправить.Похоже, что добраться до контрольной точки5, а затем перейти к контрольной точке10

var data = {
  practicals: '0',
  checkpoint1: '1',
  checkpoint2: '1',
  checkpoint3: '1',
  checkpoint4: '0',
  checkpoint5: '0',
  checkpoint6: '0',
  checkpoint7: '0',
  checkpoint8: '0',
  checkpoint9: '0',
  checkpoint10: '1',
  checkpoint11: '0',
  checkpoint12: '0',
  total: '2' 
}

var res = Object.keys(data)
  .filter(value => /^checkpoint([1-5])\d*/i.test(value))
  .map(e => data[e])

console.log(res)

// Current output: ["1", "1", "1", "0", "0", "1", "0", "0"]

// Expected output: ["1", "1", "1", "0", "0"]

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Попробуйте /^checkpoint([1-5])$/i.\d* вызывает сопоставление на любой контрольной точке больше 9, и вам это не нужно.

0 голосов
/ 20 сентября 2019

Простая настройка исправляет это.

var data = {
  practicals: '0',
  checkpoint1: '1',
  checkpoint2: '1',
  checkpoint3: '1',
  checkpoint4: '0',
  checkpoint5: '0',
  checkpoint6: '0',
  checkpoint7: '0',
  checkpoint8: '0',
  checkpoint9: '0',
  checkpoint10: '1',
  checkpoint11: '0',
  checkpoint12: '0',
  total: '2' 
}

var res = Object.keys(data)
  .filter(value => /^checkpoint([1-5])$/i.test(value))
  .map(e => data[e])

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