我有三个大小相同的数组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,而且我只是日复一日地学习它。我希望有人可以提供帮助。
答案 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()
希望它可以为您提供帮助,尤其是在必须遵循特定方法返回数据的情况下。