2016-09-22 2 views
2

나는 textContent 속성을 가져 와서 목록에 넣고 싶습니다. 나는 이것의 반복 버전을 쓸 때 내가 예상대로Javascript에서 객체 배열의 속성을 수집하기 위해지도를 사용할 수없는 이유는 무엇입니까?

table_headers = $("#careerStats table thead tr th"); 
headers.map(function(obj) {return(obj.textContent);}); 
[] 

, 나는 값의 배열을 얻을 수 있어요 :

values = []; 
for (i=0; i<table_headers.length; i++) {  
    values.push(table_headers[i].textContent); 
} 

values 
["Year", "Team", "LG", "W", "L", "ERA", "G", "GS", "CG", "SHO", "SV", "SVO", "IP", "H", "R", "ER", "HR", "HB", "BB", "IBB", "SO", "AVG", "WHIP", "GO/AO", "Year", "Team", "LG", "W", "L", "ERA", "G", "GS", "CG", "SHO", "SV", "SVO", "IP", "H", "R", "ER", "HR", "HB", "BB", "IBB", "SO", "AVG", "WHIP", "GO/AO"]  

뭔가 오해가되어야합니다지도() 예상대로 작동하지 않습니다 Javascript 프로토 타입 및/또는 map()에 대해 설명합니다.

+0

바이올린을 제공 할 수 있습니까? – Vatsal

+0

지도의 결과를 다른 변수에 지정 하시겠습니까? 맵은 원본 배열을 변경하지 않습니다. –

+1

글쎄,'headers'는'table_headers'가 아니며,'map'은 새로운 배열을 생성 할 때 어딘가에서 돌아와야하고 마지막으로 jQuery의'.map()'을 사용하고 있습니다. 네이티브'Array.map'가 아닙니다. , 그래서 당신은 아마'get()'이 필요할 것이다 – adeneo

답변

6

을 - 그것의 jQuery의 다른 방식으로 동작 map() : jQuery의지도하기의 서명이 있습니다

$(selector).map(function (index, value) { ... }) 

당신이이를 두 번째 인수를 사용하여 선택한 요소에 액세스 :

table_headers.map(function(idx, obj) {return(obj.textContent);}); 

jQuery의지도와 JS의지도에는 또 다른 차이점이 있습니다. jQuery는 새로운 래퍼을 반환하지만 일반 배열은 반환하지 않습니다. 기본 배열을 얻으려면, 당신은 get를 사용하여 액세스 할 수 있습니다 : 당신은 jQuery를 선택은 자바 스크립트 배열을 반환하는 것으로 가정합니다

mapped_table_headers.get() 
+0

완전한 대답, 감사합니다. –

1

이 코드를보십시오 : 당신은 자바 스크립트의 map()를 사용하지 않는

table_headers = $("#careerStats table thead tr th"); 
var A = table_headers.map(function() {return this.textContent;}).get(); 
+0

감사합니다. –

1

. 실제로 jQuery 객체를 반환하고 있습니다. jQuery 객체는 자바 스크립트 배열과 비슷한 기능을 많이 가지고있다. 그러나 jQuery 객체에서 .map()을 호출하면 JavaScript 배열에서 .map()과 다르게 동작하는 jQuery의 .map()을 호출하게됩니다.

+0

설명 주셔서 감사합니다. –

관련 문제