谁能告诉我我在哪里做错了? (RegExp.prototype.test())

时间:2019-11-13 12:40:21

标签: javascript arrays regex for-loop if-statement

我正在做这个练习:

  

字符串中的数字
  创建一个函数,该函数采用字符串数组,并返回仅包含数字的字符串的数组。如果没有包含数字的字符串,则返回一个空数组。

     

注释
  字符串可以包含空格或任何类型的字符。

https://edabit.com/challenge/eCPim4XcssdZdvs32

这是我的代码:

function numInStr(arr) {
  let newArr = []
  let re = /[0-9]/g

  for (let i = 0; i < arr.length; i++) {
    if (re.test(arr[i])) {
      newArr.push(arr[i])
    }
  }
  return newArr
}


console.log(numInStr(["1a", "a", "2b", "b"])) //➞ ["1a", "2b"]

console.log(numInStr(["abc", "abc10"])) //➞ ["abc10"]

console.log(numInStr(["abc", "ab10c", "a10bc", "bcd"])) //➞ ["ab10c", "a10bc"] (PROBLEM IS HERE)

console.log(numInStr(["this is a test", "test1"])) //➞ ["test1"]

我通过了除一个测试之外的所有测试:

numInStr(["abc", "ab10c", "a10bc", "bcd"]) //➞ ["ab10c", "a10bc"]

我的函数仅返回[“ ab10c”]。我试图理解,但仍然毫无意义。如果我更改了元素的顺序,那么我的函数将起作用:

numInStr(["abc", "a10bc", "bcd","ab10c"]) //[ "ab10c", "a10bc"]

我用另一种方式解决了这个问题。但是我想知道我在哪里做错了。你能跟我解释一下吗?为什么Regex测试方法不起作用?

0 个答案:

没有答案