javascript map 未捕获类型错误

标签 javascript

如果我在脚本中使用 map ,我会收到此错误。如何解决这个错误?

我收到此错误:未捕获类型错误:无法读取 null 的属性“map”

Js脚本:

 var stringval="global $1200"; 
 var getVal=stringval.match(/\d+/g).map(Number);

最佳答案

String.match返回Array<string> | null .

  • 如果找到匹配项,将返回匹配字符串的数组。
  • 如果未找到匹配项,null将被渲染。

所以在你的情况下,如果字符串没有任何数字,它将返回 null导致脚本中断。

示例:

function getNumber(stringval) {
  return stringval.match(/\d+/g).map(Number);
}

var stringval = "global $1200";
console.log(getNumber(stringval))
console.log(getNumber('Hello World'))

<小时/>

解决此问题的一个简单方法是添加对是否存在匹配的检查:

function getNumber(stringval) {
  // You can set any value based on your requirement
  var defaultValue = undefined;
  var matches = stringval.match(/\d+/g)
  return matches !== null ? matches.map(Number) : defaultValue;
}

var stringval = "global $1200";
console.log(getNumber(stringval))
console.log(getNumber('Hello World'))

关于javascript map 未捕获类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54554051/

相关文章:

javascript - 用 javascript 编写的 C 解释器

javascript - 使用javascript调用webservice而不使用jQuery ajax?

javascript - 增加/减少页面上所有元素字体大小的有效方法

javascript - 是否可以在 Typescript 中动态定义常量?

javascript - html背景图片更改为css?

javascript - 通过JS加载CSS

javascript - 如何在 JQuery 的 if 语句中调用函数

javascript - Bootstrap : Open Another Modal in Modal

javascript - 绑定(bind)为空时的 Angular 默认值

javascript - 想要在 JavaScript 中验证电子邮件地址,但不知道如何在字符串中只包含一个 @