JavaScript 从函数获取返回数组并格式化数组项

JavaScript getting returned array from function and formatting array items

我在尝试从 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'

但我不确定应该在何时何地格式化它。有什么想法吗?

提前致谢。

要从包含这些单个单词作为元素的数组中获取所需的 'Event4','Event5','Event6','Event7' 字符串格式,您可以简单地 join 带有 ',' 的数组元素,然后只需添加前面和后面缺少的 ' 像这样:

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

getChart 函数只是在构建数组时在控制台记录 eventNameList。如果将 getChart 函数移出循环,它只会在完成循环后记录数组。你可以把它放在循环之后,AJAX 之后,或者它现在所在位置以外的任何地方,它会正常显示。您正在观看您的代码,您的眼睛正在欺骗您。