2017-05-18 6 views
0

의 경기 방법 돌아 객체 나 코드의 조각을 다음 있습니다 : 내가 먼저 인쇄하려고하면자바 스크립트 : 대신 배열

나는 그러나 배열 filenameTest_components의 처음 두 요소를 사용하려는
var completename = file.name; 
var regex = '/-\w+_/'; 
var filenameTest_components = completename.match(/-\w+_/); 
console.log(completename); 
console.log(typeof filenameTest_components, filenameTest_components) 

, 그것은 나에게 오류를 제공 배열 요소 매치 방법 array 또는 object 반환해야 만약 혼란하고,이 오차

console.log(filenameTest_components[1]) 

TypeError: Cannot read property '1' of null 

?

는 SO 전류 출력 난 단지 입력 문자열을 인쇄하는 경우 다음과 같이 같은 경기를 출력 같습니다

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

+0

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

도 null이 – JellyKid

+0

'null' 혼란 스러울 수 유형 객체의 것은 'object'하지만 해당 없음. 나는 심지어 말하고있는 것을 이해할 수 없다. – Chay22

+0

그래도 이것은 혼란 스럽다. 배열은 키가 0부터 시작하는 키/값 객체입니다. console.log (filenameTest_components [ 'index'])를 출력하면 4가 출력됩니다. 기술적으로 출력은 [0 : '-routelearning_', ...]이라고 할 수 있습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec에서 자세한 내용을 확인하십시오 – JellyKid

답변

0

Javascript match 함수는 일치 항목을 Array 객체로 반환합니다.

당신이 일치하는 함수에서 반환 된 값을 사용하려는 경우

, 당신은 일치 (null 기타)이있을 때

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

'el => el'은 무엇입니까? 약자? – learnningprogramming

+0

죄송합니다, 제 실수입니다. 나는 그것을 신중히 조사하지 않았다. 당신의 정규식에 의한 것 같아요. 'el => el'은'filenameTest_components' 배열의 각 요소를 나타냅니다. 이것은 ES6 화살표 기능입니다. 자세한 내용은 아래 링크를 확인하십시오. http://es6-features.org/#ExpressionBodies –

0

String.prototype.match() 항상 배열을 반환 배열로 변환해야하지만, 같이 당신은 알고 있습니다 , 배열은 JavaScript의 객체입니다. 배열에 typeof을 사용하면 object (typeof nullobject을 반환합니다)을 받게됩니다. 따라서 배열을 가지고 있는지 여부를 확인하는 가장 좋은 방법은 Array.isArray()을 사용하는 것입니다.

+0

참조. 일치 방법에서 배열 출력의 첫 번째 요소를 얻는 방법보다 – learnningprogramming

+0

다음과 같이 :'arr [0]'. 배열의 첫 번째 인덱스가 0이 아니라 1 ... – Badacadabra

+0

이 문제라는 것을 잊지 마십시오. arr [0]은 오류 만 반환합니다. – learnningprogramming