在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)中将数组推入数组的主要内容,如果未能解决你的问题,请参考以下文章
Jquery - 简单数组,如果项目不存在则推入,如果项目存在则移除项目