在一个数字组成的字符串中提取数字的个数?

node js里面,给出一数字组成的字符串,例如,‘8910151821’,这个字符串中怎么样来获得3~20之间的数字的个数,结果应该是:8,9,10,15,18,一共5个数字,其中21不算,请问一下怎么来实现呢???谢谢

阅读 2.4k
2 个回答
let compare = (d) => {
    return d > 3 && d < 20
}

'8910151821'.split('').map((d, i, arr) => {
    d = +d;
    if (i > 1) {
        let comD = arr[i - 1] * 10 + d;
        return compare(comD) ? comD : null
    } else if (compare(d)) {
        return d;
    }
}).filter(d => d);
const countNum = s => [...s].reduce((res, val) => {
  switch (true) {
    case !+val && res[2]:
      console.log('2' + val)
      res[0]++
      res[2] = false
      break
    case +val > 2 && !res[1]:
      console.log(val)
      res[0]++
      break
    case +val && +val < 3 && !res[1]:
      res[val] = true
      break
    case res[1]:
      console.log('1' + val)
      res[0]++
      res[1] = false
      break
    default:
      [res[1], res[2]] = [false, false]
      break
  }
  return res
}, [0, false, false])[0]

countNum('8910151821')

是这个意思么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题