在Javascript(jQuery)中将数组推入数组

Posted

技术标签:

【中文标题】在Javascript(jQuery)中将数组推入数组【英文标题】:Push array into array in Javascript (jQuery) 【发布时间】:2012-11-29 15:24:57 【问题描述】:

我一直在尝试在循环中获取 push() 方法以构建如下结构:

var locations2 = [
    ['User', position.coords.latitude, position.coords.longitude, 1],
    ['Bondi Beach', -33.890542, 151.274856, 2],
    ['Coogee Beach', -33.923036, 151.259052, 3],
    ['Cronulla Beach', -34.028249, 151.157507, 4],
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 5],
    ['Maroubra Beach', -33.950198, 151.259302, 6]
];

这是我的代码:

var locations = [];

$.ajax(
    type: "POST",
    url: "/ajax/map.php",
    data: "name=test",
    dataType: "json",
    cache: false,
    success: function(data)
        $.each(data.points, function(i,item)
            array_push = ["test", parseFloat(item.origem_lat), parseFloat(item.origem_lng), i];
            locations.push(array_push);
        );               
    
);  

但是,位置的 javascript console.log 显示一个空数组。

我尝试以多种不同的方式使用 push(),但我无法获得与 location2 相同的结构。这里最大的问题是在循环之前我不知道locations数组里面会有多少个数组,所以我不能预先初始化它。

有什么想法吗?

【问题讨论】:

您的语法看起来正确——您确定data.points 包含您期望的数组吗? 向您的 ajax 调用添加错误回调。它可能会引发错误,但您可能不知道此代码。 您可以使用 alert( JSON.stringify(x) ) 快速转储您的数组内容,其中 x 是相关数组。 不要忘记将console.log 语句放在回调中,否则它不会被填充。 请发布您的结果 json 以进行验证! 【参考方案1】:

我发现了问题所在。它与 push() 方法本身无关。显然 ajax 调用不是按顺序执行的(这就是它是异步的原因)。我在 ajax 调用选项中添加了 async: false,现在一切正常。

感谢大家的意见。

【讨论】:

async: false 违背了使用 异步 JavaScript 和 XML 的全部目的。你会遇到页面挂起等问题,因为你的请求现在被阻塞了。也许看看 Deferred Objects api.jquery.com/category/deferred-object +1 用于提及延期。值得一提的是,有一点学习曲线,但它们并不算太糟糕,非常适合此类情况。

以上是关于在Javascript(jQuery)中将数组推入数组的主要内容,如果未能解决你的问题,请参考以下文章

javascript 对象被推入数组作为参考

Javascript将对象推入数组

Jquery - 简单数组,如果项目不存在则推入,如果项目存在则移除项目

将对象推入数组中,而无需在 javascript 中使用键

使用jquery表中的复选框从数组中删除JavaScript对象

JavaScript对象推入数组[重复]