javascript - 全局变量仅返回循环中最后一个实例的值

标签 javascript ajax global-variables leaflet

我在 ajax 请求之外创建了一个全局变量; var pos = [];收集来 self 的 api 的特定“工作”的纬度和经度信息。 “作业”在 ajax 请求之外还有它自己的全局变量,用于收集每个作业的数据数组 ( var Jobs = []; )。在ajax请求中,我使用了通用Jobs = data将变量值设置为成功时请求中收集的数据 ( success: function (data) {Jobs = data; ... )。然后我使用 Jobs.forEach循环遍历每个作业。 pos然后使用.getLatLng给变量赋值为每个作业创建的标记上的传单方法。我的问题是,当我尝试调用pos时变量(我正在使用 console.log(pos); 进行测试)在 forEach 循环之外,它只吐出最后一个实例。关于我做错了什么有什么建议吗?我的简化代码如下。注意:我正在尝试调用pos在另一个请求中,但它对于全局 Jobs 工作正常变量。

var grid = L.geoJson();
var Jobs = {};
var pos = [];

//var control = L.control.layers(grid).addTo(map);
// This is the ajax request for the jobs data
$.ajax({
  type: 'GET',
  url: url,
  timeout: 8000,
  crossDomain: true,
  dataType: 'json',
  data: Jobs,
  ...

  //Renders data to view
  success: function (data) {
    Jobs = data;
    Jobs.forEach(function (value) {
      console.log (pos);
      ...
      var latitude = value.latitude;
      var longitude = value.longitude;
      ...

      var marker = L.marker([value.latitude, value.longitude]).addTo(map);
      pos = marker.getLatLng();
      ...  
      console.log (pos);
    }); 

   // Fetch the file data making the grid       
    $.getJSON('./grid.geojson', function (data) {
       // Assign the results to the geojsonData variable

      console.log(Jobs);
      console.log(pos);

最佳答案

您每次都会用新标记覆盖 pos 变量。 pos =marker.getLatLng();

相反,您需要将新值.push到数组中,这会将每个新值添加到数组中

pos.push(marker.getLatLng()); //['marker1']

然后下次循环运行时,将添加下一个标记

pos.push(marker.getLatLng()); //['marker1', 'marker2']

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/push

关于javascript - 全局变量仅返回循环中最后一个实例的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38900565/

相关文章:

JavaScript : Add time loading function for form

javascript - GET函数控制台错误

javascript - 您可以从冒泡到正文的元素中删除 $.on() 添加的事件监听器吗?

javascript - 如何自定义chartjs

c# - 如何修复错误 : The message received from the server could not be parsed

c++ - C++中的模板化全局结构

javascript - Qunit 不可见的函数

javascript - 当我们把一个方法存入一个变量然后调用它的时候,为什么context对象变成了全局的window对象呢?

javascript - 如何从 JQuery 的最后一条记录开始进行 JSON 循环

javascript - 在没有 POST 的情况下将大量数据从一个页面传递到另一个页面?