【问题标题】:Push array into object将数组推入对象
【发布时间】:2020-06-22 01:14:05
【问题描述】:

我有三个相同大小的数组,lat[], lon[], title[]。我需要以这种格式创建一个对象

locations = [
    {
        lat: 45.4654,
        lon: 9.1866,
        title: 'Milan, Italy'
    },
    {
        lat: 47.36854,
        lon: 8.53910,
        title: 'Zurich, Switzerland'
    },
    {
        lat: 48.892,
        lon: 2.359,
        title: 'Paris, France'
    }
];

到目前为止,我已经这样做了

  var locations = {};
  var lat = [1, 2, 3];
  var lon = [4, 5, 6];
  var title = ['title 1', 'title 2', 'title 3'];
  var numLocation = $lat.length;

  for (var j=0; j < numLocation; j++) {

    locations[j] = {};
    locations[j].lat = lat[j];
    locations[j].lon = lon[j];
    locations[j].title = title[j];
  }

但是我得到一个像这样的对象Object { 0={...}, 1={...}, 2={...}, more...} 当我需要一个像[Object { lat=45.4654, lon=9.1866, title="Milan, Italy", more...}, Object { lat=47.36854, lon=8.5391, title="Zurich, Switzerland", more...}, Object { lat=48.892, lon=2.359, title="Paris, France", more...}, Object { lat=48.13654, lon=11.57706, title="Munich, Germany", more...}]

对不起,如果我不使用技术术语,但我真的不太了解 javascript,我只是每天都在学习它。我希望有人可以提供帮助。

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    假设您所有的 lat[]lon[]title[] 数组的大小都相同,您可以尝试将 locations 变量定义为从 0 开始的整数索引数组 ([]),而不是一个javascript对象({}):

    var locations = [];
    for (var i = 0; i < lat.length; i++) {
        locations.push({
            lat: lat[i],
            lon: lon[i],
            title: title[i]
        });
    }
    

    当然,您应该检查所有 3 个数组的大小是否相同,以确保您知道:

    var length = lat.length;
    if (lon.length !== length || title.length !== length) {
        alert('Sorry, but the operation you are trying to achieve is not well defined');
    }
    

    【讨论】:

    • 非常感谢!!我刚刚学到了另一件事,非常感谢您的帮助
    【解决方案2】:

    您已将locations 设为对象而不是数组。你需要[],而不是{}

    【讨论】:

      【解决方案3】:

      我相信也有同样的问题,所以这是我的解决方案。

      问题:需要将数组推送到 javascript 对象中。

      代码:

      function arrForm() {
      
        // initialize empty array
        let amsRes = [] 
      
        // push objects into it
        amsRes.push({ "f1": "r1", "f2": "r2" })
      
        // solution: create a object, by populating it with the array
        let poo = { amsRes } 
      
        // log to make sure
        console.log(poo); 
      
      }
      
      arrForm()
      

      希望它对您有所帮助,特别是如果您必须按照特定方法返回数据。

      【讨论】:

        猜你喜欢
        • 2017-12-05
        • 2023-03-14
        • 2016-05-09
        • 2011-02-13
        • 2012-10-21
        • 1970-01-01
        • 2023-03-29
        • 2019-03-24
        相关资源
        最近更新 更多