Javascript 在for循环(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 !=

我有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 !== 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);
}