将数组推入对象

时间:2016-01-17 20:08:06

标签: javascript arrays object

我有三个大小相同的数组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,而且我只是日复一日地学习它。我希望有人可以提供帮助。

3 个答案:

答案 0 :(得分:7)

假设您的所有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');
}

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

问题:需要将数组推入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()

希望它可以为您提供帮助,尤其是在必须遵循特定方法返回数据的情况下。