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

时间:2017-05-18 22:38:24

标签: 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

如果匹配方法应该返回arrayobject,我会感到困惑吗?

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

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

编辑:

为了给出更大的图片,下面是github的链接

std::sscanf()

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

Javascript match函数将匹配作为Array对象返回。

如果您想使用匹配函数的返回值,则必须将其转换为数组

var result = filenameTest_components.map(el => el);
console.log(result[0]);

答案 2 :(得分:0)

String.prototype.match()总是在匹配时返回一个数组(否则为null),但正如您所知,数组是JavaScript中的对象。如果您在数组上使用typeof,则会objecttypeof 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