gpt4 book ai didi

javascript - 在变量中使用 Foreach 循环

转载 作者:可可西里 更新时间:2023-11-01 01:15:27 27 4
gpt4 key购买 nike

我正在使用谷歌地图进行实时跟踪。我必须根据数据库更新更改标记。

这是一个 testLocs 变量。我想让它充满活力。

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);

因此,对于每 3000(3 秒)一次来自 ajax 的调用,我调用了 ajax 脚本。所以,我收到了这种格式的 ajax 响应。

在控制台中,我在 ajax 响应中从数据库中获得了 3 个数组,

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

现在,我想在 Above var testLocs 中使用它。

整个函数,

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);

我试过这个但它不起作用。

var testLocs = {

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

编辑:

Ajax 代码

    (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);
}
});
})();

在 ajax 响应之后,我得到了下面的数组,console.log(data);

数组:

包含 4 个对象的数组,在每个对象中我得到了所有信息 device_id、device_name、纬度、经度。在控制台中,我在这些信息中得到了数组。

 [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"}]

最佳答案

转换代码(将 3 个数组转换为带有另外 3 个对象的对象):

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);

因此,您的函数可能如下所示:

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);
}

关于javascript - 在变量中使用 Foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40438490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com