2015-01-24 3 views
0

JavaScript에서 함수에서 반환 된 배열을 가져 오려고 할 때 몇 가지 문제가있었습니다.JavaScript가 함수에서 배열을 반환하고 배열 항목의 서식을 지정합니다.

var circle; 
var eventNameList = []; 
function doBuffer(pos) { 
$.ajax({ 
    url: "/TogetherSG/TogetherServlet?action=GetEvents", 
    type: "GET", 
    data: "", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (data) { 
     $.each(data, function (i, jsondata) { 
      showBuffer(p1,p2, eventName, eventDesc, eventVenue); 
      getChart(); 
     }); 
    }, 
    error: function (request, state, errors) { 
    } 
}); 
} 

기본적으로 doBuffer() MySQL의 모든 이벤트를 얻고 계산을 수행 할 수 showBuffer에 각 이벤트를 전달합니다 : 여기에 코드입니다.

function showBuffer(p1, p2, eventName, eventDesc, eventVenue) { 
// Calculation for distance between two points 
var distance = (google.maps.geometry.spherical.computeDistanceBetween(p1, 
     p2)/1000).toFixed(2); 
    eventNameList.push(eventName); 
} 
} 

showBuffer의 경우 거리에 대한 각 포인트를 계산합니다. 거리가 1보다 작 으면 포인트를 배열로 밀어 넣습니다. 나는 위의 첫 번째 함수에서 호출 getChart()에서 다음

:

function getChart(){ 
    console.log(eventNameList); 
} 

나는 목록을 인쇄하고 있습니다. 그러나 나는 결과를 다음과 같이 얻고 있습니다.

[] events.js:202 
[] events.js:202 
[] events.js:202 
[] events.js:202 
[] events.js:202 
[] events.js:202 
["Event4"] events.js:202 
["Event4", "Event5"] events.js:202 
["Event4", "Event5", "Event6"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] events.js:202 
["Event4", "Event5", "Event6", "Event7"] 

나는 그것이 얼마나 여러 번 반복되는지 궁금합니다. 반환 된 결과에서이 형식의 문자열로 서식을 지정해야하기 때문에 :

'Event4','Event5','Event6','Event7' 

하지만 언제 어디서 형식을 지정해야할지 모르겠습니다. 어떤 아이디어?

미리 감사드립니다.

+0

* "어떻게 반복 될지 궁금해."* 분명히 많은 요소/속성이 '데이터'에 있습니다. –

+0

하지만 서블릿의 모든 항목이 반복되면 getChart를 호출해야하며 if 조건을 전달하면 point는 eventNameList에 저장됩니까? –

+0

'$ .each (...);'? 이후? –

답변

1

은과 같이 다시는 ',' 때와 단순히 join 배열 요소를 할 수있는, 요소 등이 하나의 단어가 포함 된 배열에서 'Event4','Event5','Event6','Event7'의 원하는 문자열 포맷을 취득하고 바로 앞에 누락 '를 추가하려면 :

var desiredStringFormat = "'" + yourArray.join("','") + "'"; 
0

getChart 함수는 배열이 빌드 될 때 eventNameList를 로깅하는 콘솔입니다. getChart 함수를 루프 밖으로 이동하면 루프를 마친 후에 만 ​​배열을 기록합니다. 루프가 끝난 후, AJAX가 끝난 후, 또는 현재 위치에 추가 할 수 있습니다. 작동중인 코드를보고 있고 눈이 당신을 속이고 있습니다.