dongnao2582 2016-11-05 12:55
浏览 73
已采纳

在变量中使用Foreach循环

I'm working on google map for live tracking. i have to change markers according to database Updation.

This is a testLocs variable. i want to make it dynamic.

var testLocs = {
   1: { info:'Demo', lat:31.933517, lng:74.910278 },
   2: { info:'Demo', lat:32.073266 , lng:76.997681 },
   3: { info:'Demo', lat:32.23139 , lng:78.425903 },
}
setMarkers(testlocs); 

So, For that from ajax call every 3000 (3 seconds) i call ajax script. So, I got response from ajax in this format.

In Console i got 3 Arrays from database in ajax response,

Array-1 : ["Device-1", "Device-2", "Device-3"]; // all device name
Array-2 : ["31.933517", "32.073266", "32.23139"]; // all latitude 
Array-3 : ["74.910278", "76.997681", "78.425903"]; // all longitude

Now,I want to use it in Above var testLocs.

Whole Function,

function  myTimer(new_latitude, new_longitude,new_name)
    {
             var new_latitude = new_latitude;
             var new_name = new_name;
             var new_longitude = new_longitude;

             console.log(new_name);
             console.log(new_latitude);
             console.log(new_longitude);

             var testLocs = {
                1: { info:'Demo', lat:31.933517, lng:74.910278 },
                2: { info:'Demo', lat:32.073266 , lng:76.997681 },
                3: { info:'Demo', lat:32.23139 , lng:78.425903 },
             }
             setMarkers(testlocs);
        }
    var myVar = setInterval(function(){ myTimer() }, 3000);

I tried with this but its not working.

var testLocs = {

      new_latitude.forEach(function(single_value)
         {
            single_value_latitude = single_value;
            // alert(single_value_latitude);
         });
}

EDIT :

Ajax code

    (function worker() {
     $.ajax({
        type: "POST",
        dataType: "json",
        // data: {business1: business1},
        url: '<?php echo site_url('home/automatic_fetch_data'); ?>',
        success: function (data) {
                    //alert(data);

                var new_lat = [];
                var new_lng = [];
                var new_name = [];

                $.each(data, function(k, v) {

                    var lati = v['latitude'];
                    var lngi = v['longitude'];
                    var namei = v['name'];
                    new_lat.push(lati);
                    new_lng.push(lngi);
                    new_name.push(namei);
                });
                var new_latitude = new_lat;
                var new_longitude = new_lng;
                var new_name = new_name;
                // console.log(new_latitude);
                // console.log(new_longitude);
                myTimer(new_latitude, new_longitude,new_name);
        },complete: function() {
                // Schedule the next request when the current one's complete
                setTimeout(worker, 3000);
            }
    });
})();

I got below array in after ajax response, console.log(data);

Array :

Array with 4 Object and in each object i got all the information device_id, device_name, latitude, longitude. In Console i got array in this information.

 [Object { id="1",  device_id="1", device_name="Device-1",  latitude="29.630771",  longitude="74.910278"}, Object { id="2",  device_id="2", device_name="Device-2",  latitude="32.073266",  longitude="76.997681"}, Object { id="3",  device_id="5", device_name="Device-3",  latitude="29.630771",  longitude="74.910278"}, Object { id="5",  device_id="3", device_name="Device-3",  latitude="29.630771",  longitude="74.910278"}]
  • 写回答

1条回答 默认 最新

  • doufu7835 2016-11-05 13:27
    关注

    transformation code (3 arrays into object with another 3 objects):

    var new_name = ["Device-1", "Device-2", "Device-3"];
    var new_latitude = ["31.933517", "32.073266", "32.23139"]; // all latitude 
    var new_longitude = ["74.910278", "76.997681", "78.425903"];
    
    var testLocs = new_name.reduce(function (res, curr, currentIndex) {
      res[currentIndex + 1] = {
        info: new_name[currentIndex],
        lat: new_latitude[currentIndex],
        lng: new_longitude[currentIndex]
      };
      return res;
    }, {});
    
    console.log(testLocs);

    so, your function may look like:

    function  myTimer(new_latitude, new_longitude,new_name) {
      console.log(new_name);
      console.log(new_latitude);
      console.log(new_longitude);
    
      var testLocs = new_name.reduce(function (res, curr, currentIndex) {
        res[currentIndex + 1] = {
          info: new_name[currentIndex],
          lat: new_latitude[currentIndex],
          lng: new_longitude[currentIndex]
        };
        return res;
      }, {});
    
      setMarkers(testlocs);
    }
    
    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?