javascript:匹配方法返回对象而不是数组

标签 javascript arrays match

我有以下代码:

var completename = file.name;
var regex = '/-\w+_/';
var filenameTest_components = completename.match(/-\w+_/);
console.log(completename);
console.log(typeof filenameTest_components, filenameTest_components)

我打算使用数组 filenameTest_components 的前两个元素,但是,当我尝试打印数组的第一个元素时,它给了我错误:

console.log(filenameTest_components[1])

TypeError: Cannot read property '1' of null

有了这个错误,我很困惑匹配方法是否应该返回数组还是对象

如果我仅打印输入字符串并匹配输出,则当前输出如下所示:

task-routelearning_events.json
object [ '-routelearning_',
  index: 4,
  input: 'task-routelearning_events.json' ]

编辑:

为了提供更大的图片,下面是 github 的链接

https://github.com/suyashdb/bids-validator/blob/illegal_Character_underscoreInTaskname/validators/bids.js#L128

最佳答案

当存在匹配时,

String.prototype.match() 始终返回一个数组(否则 null),但正如您所知,数组是 JavaScript 中的对象。如果在数组上使用 typeof,您将得到 object(typeof null 也返回 object)。因此,确定是否有数组的最佳方法是使用 Array.isArray()。

var str = 'foo bar baz foo',
    res = str.match(/foo/g);

console.log(res); // ["foo", "foo"]
console.log(typeof res); // object
console.log(Array.isArray(res)); // true

关于javascript:匹配方法返回对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44058848/

相关文章:

javascript - 在 AngularJS 中解析包含数据绑定(bind)的字符串

javascript - 我如何监控 DOM 的变化?

python - 在另一个数组中查找一个数组的匹配索引

c++ - 我在 C++ 中的搜索功能是提取所有答案,而不是一个单一的

javascript - 匹配字符串中的单词并使它们小写

javascript - 在 Angular 中滑动多级菜单和面包屑

javascript - lodash groupBy 正在更改我的集合中的顺序

windows - 从计算机名称列表中获取登录用户

javascript - 如何使用 .replace with match() 方法 javaScript

rust - 重命名匹配中的枚举字段 (rust)