Javascript 在for循环(JS)中填充数组
我有js代码Javascript 在for循环(JS)中填充数组,javascript,arrays,Javascript,Arrays,我有js代码 var model = { start: newstart, end: newstop, imei: imei }; $.ajax({ url: dburl, dataType: 'json', type: 'GET', data: model, success: function (data) { speeddata = data; if (speeddata.length !=
var model = {
start: newstart,
end: newstop,
imei: imei
};
$.ajax({
url: dburl,
dataType: 'json',
type: 'GET',
data: model,
success: function (data) {
speeddata = data;
if (speeddata.length !== 0) {
for (var i = 0; i < speeddata.length; i++) {
path = "path=" + speeddata[i].Latitude2 + ',' + speeddata[i].Longitude2;
var googleurl = "https://roads.googleapis.com/v1/speedLimits?"
+ path + "&key=" + roadsapikey;
+ path + "&key=" + roadsapikey;
$.ajax({
url: googleurl,
dataType: 'json',
type: 'GET',
success: function (data) {
for (var i = 0; i < data.speedLimits.length; i++) {
speedobject.push({
speedlimits: data.speedLimits[i].speedLimit
});
}
console.log(speedobject);
}
});
}
}
},
error: function () {
alert("Error");
}
});
在此之后,我需要获取
speeddata
中每个元素的speedlimit,并将其写入speedobject
我试着像这里一样
if (speeddata.length !== 0) {
for (var i = 0; i < speeddata.length; i++) {
path = "path=" + speeddata[i].Latitude2 + ',' + speeddata[i].Longitude2;
var googleurl = "https://roads.googleapis.com/v1/speedLimits?"
+ path + "&key=" + roadsapikey;
+ path + "&key=" + roadsapikey;
$.ajax({
url: googleurl,
dataType: 'json',
type: 'GET',
success: function (data) {
for (var i = 0; i < data.speedLimits.length; i++) {
speedobject.push({
speedlimits: data.speedLimits[i].speedLimit
});
}
console.log(speedobject);
}
});
}
}
if(speeddata.length!==0){
对于(变量i=0;i
但是当console.log
speedobject时,我有6次重复
这是一个数组
所以,如果我想在表中显示它,我将有36个条目,而不是6个条目
我的麻烦在哪里
谢谢您的帮助。像这样更新您的代码
if (speeddata.length !== 0) {
for (var i = 0; i < speeddata.length; i++) {
path = "path=" + speeddata[i].Latitude2 + ',' + speeddata[i].Longitude2;
var googleurl = "https://roads.googleapis.com/v1/speedLimits?"
+ path + "&key=" + roadsapikey;
+ path + "&key=" + roadsapikey;
$.ajax({
url: googleurl,
dataType: 'json',
async: false,
type: 'GET',
success: function (data) {
speeddata[i].speedlimits=data.speedLimits;
}
});
}
}
if(speeddata.length!==0){
对于(变量i=0;i
更新了success函数
如果出现问题,请添加注释
编辑:我在调用中添加了async:false,
,您可以在其中填充speeddata对象。
另一种方法是通过重构代码进行回调据我所知,您希望有6个条目,每个条目都有一个速度限制数组,如下所示:
success: function (data) {
var speedLimits = []
for (var i = 0; i< data.speedLimits.length;i++) {
speedLimits.push(data.speedLimits[i].speedLimit);
}
speedobject.push({speedLimits: speedLimits})
console.log(speedobject);
}
成功:函数(数据){
var speedLimits=[]
对于(变量i=0;i
您能在不使用AJAX调用的情况下提供fiddle链接和数据对象吗?等一下,我会发布it@PavanI无法创建fiddle,因为它将具有google roads api密钥。但我包括了速度数据data@PavanAnd你想要什么?在此之后,我需要获取speeddata中每个元素的speedlimit,并将其写入speedobject。我在post中写下了关于我的所有信息。麻烦@Pavan无法设置未定义的属性“speedlimits”
我现在将发布来自google的响应屏幕,并更新post此数据对象类似于success:function(data){
…您在ajex呼叫中看到的数据中有什么?我在post中粘贴了屏幕截图。您可以访问speeddata
内部成功吗?不可以。我需要获取speeddata中每个元素的speedLimit属性。我更新了post,请检查。
success: function (data) {
var speedLimits = []
for (var i = 0; i< data.speedLimits.length;i++) {
speedLimits.push(data.speedLimits[i].speedLimit);
}
speedobject.push({speedLimits: speedLimits})
console.log(speedobject);
}