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
isobject
但它不是。我甚至不明白我在说什么,所以这也让人困惑。数组是键从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'.