Javascript 将对象推送到全局数组会覆盖以前的值吗?

标签 javascript arrays

我在 Javascript 中遇到了这个问题:我想从对象数组中获取经度和纬度值。这一切都很好,但是当我尝试将它保存到全局数组中时,它会覆盖以前的每个值。结果是一个数组,其中包含最后一个推送对象的 8 倍。

全局数组:var _coordinates = [];

function getCoordinates()
{
   mark = {};

   for(var key in _data)
   {
       if(_data.hasOwnProperty(key)){
           mark["lng"] = _data[key].long;
           mark["lat"] = _data[key].lat;
       }

       console.log(mark); // Returns different coordinates (yay)
       _coordinates.push(mark);

   }   

   console.log(_coordinates); // All coordinates are the same (meh)
}

这是我第一次在这里提问。所以如果我忘记了什么,请告诉我。

最佳答案

您可以尝试在 for 循环中声明和实例化 mark 对象,因为现在您一直在修改同一个实例:

function getCoordinates() {
    for(var key in _data) {
        var mark = {};
        if(_data.hasOwnProperty(key)) {
            mark["lng"] = _data[key].long;
            mark["lat"] = _data[key].lat;
        }
        _coordinates.push(mark);
    }   

    console.log(_coordinates);
}

关于Javascript 将对象推送到全局数组会覆盖以前的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18361699/

相关文章:

javascript - 如何在 HTML 表单中显示下一项

java - 第二个测试用例的数组索引越界异常

android - onItemClick 获取数组上项目的 ID 或名称

javascript序列化对象同时保留继承

javascript - 如何在上下文中搜索并突出显示字符串的每次出现

javascript - 警报最高数字

javascript - MongoDB 对填充字段的查询

javascript - 使用存储的凭据自动登录 PhoneGap Onsen UI 应用程序

Java - 读取一个数组列表中的值字符并将其转换为另一个数组列表中的字符串

PHP - 将 int 键转换为字符串?