Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:match方法返回对象而不是数组_Javascript_Arrays_Match - Fatal编程技术网

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

javascript:match方法返回对象而不是数组,javascript,arrays,match,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_组件的前两个元素,但是,当

我有以下代码:

var completename = file.name;
var regex = '/-\w+_/';
var filenameTest_components = completename.match(/-\w+_/);
console.log(completename);
console.log(typeof filenameTest_components, filenameTest_components)
我打算使用数组filenameTest_组件的前两个元素,但是,当我尝试打印数组的第一个元素时,它会给我错误:

console.log(filenameTest_components[1])

TypeError: Cannot read property '1' of null
有了这个错误,我不知道match方法应该返回
数组
还是一个
对象

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

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

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


如果匹配,则返回数组;如果不匹配,则返回null


如果匹配,则返回数组;如果不匹配,则返回null


Javascript match函数将匹配项作为数组对象返回

若要使用match函数返回的值,必须将其转换为数组

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

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

若要使用match函数返回的值,必须将其转换为数组

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

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(类型res);//对象

console.log(Array.isArray(res));//true
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(类型res);//对象


console.log(Array.isArray(res));//true
也是null类型的object,这可能会使人混淆
null
对象
但不是。我甚至不明白我在说什么,所以这也让人困惑。数组是键从0开始的键/值对象。如果您使用console.log(filenameTest_components['index']),它应该输出4。从技术上讲,输出可以是[0:'-routelearning_uz',…]。查看更多信息,我建议阅读它来解释JS类型或其中的不足。
/Users/admin/Desktop/git_bids-validator/unlalk_character/bids validator/validators/bids.JS:163 var result=filenameTest_components.map(函数(filenameTest_component){return filenameTest_component;});                                                     ^  TypeError:无法读取null的属性“map”
并且null是object类型,这可能会混淆
null
is
object
但它不是。我甚至不明白我在说什么,所以这也让人困惑。数组是键从0开始的键/值对象。如果您使用console.log(filenameTest_components['index']),它应该输出4。从技术上讲,输出可以是[0:'-routelearning_uz',…]。查看更多信息,我建议阅读它来解释JS类型或其中的不足。
/Users/admin/Desktop/git_bids-validator/unlalk_character/bids validator/validators/bids.JS:163 var result=filenameTest_components.map(函数(filenameTest_component){return filenameTest_component;});                                                     ^  TypeError:无法读取null的属性“map”
有一个匹配项,当我打印它时它看起来像数组,但我可以打印第一个元素。。有一个匹配项,当我打印它时它看起来像数组,但我可以打印第一个元素。
el=>el
代表什么?对不起,这是我的错误。我没有仔细检查。我想是你的正则表达式引起的
el=>el
代表
filenameTest\u组件
数组中的每个元素。这是ES6箭头函数,请查看下面的链接了解更多详细信息:
el=>el
代表什么?对不起,这是我的错误。我没有仔细检查。我想是你的正则表达式引起的
el=>el
代表
filenameTest\u组件
数组中的每个元素。这是ES6箭头功能,请查看下面的链接了解更多详细信息:我明白了。然后,如何从match方法获取数组输出的第一个元素,如下所示:
arr[0]
。不要忘记数组的第一个索引是0,而不是1…这正是问题所在。arr[0]只返回一个错误。请使用
console.log(arr)
并告诉我您得到了什么。我怀疑问题在于您的regex…我正在得到:
task-routelearning\u events.json对象['-routelarning\uu',索引:4,input:'task-routelearning\u events.json']
我看到了。然后,如何从match方法获取数组输出的第一个元素,如下所示:
arr[0]
。不要忘记数组的第一个索引是0,而不是1…这正是问题所在。arr[0]只返回一个错误。请使用
console.log(arr)
并告诉我您得到了什么。我怀疑问题出在您的正则表达式上……我得到:
task-routelearning\u events.json对象['-routelearning',索引:4,输入:'task-routelearning\u events.json'.