我想填充包含对象和字符串的“markers”数组。我有一个存储在obj变量中的另一个javascript对象,我想从中提取数据并将其存储到markers数组中。 我用以下代码填充数组
for (i = 0; i < obj.results.bindings.length; i++) {
markers[i].content = obj.results.bindings[i].placeName.value;
markers[i].coords.lat = Number(obj.results.bindings[i].lat.value);
markers[i].coords.lng = Number(obj.results.bindings[i].long.value);
}
和markers数组看起来像这样(手动填充,而不是for循环)
var markers = [
{
coords:{lat:37.8707,lng:32.5050},
content:'<h1>Mevlana museum</h1>'
},
{
coords:{lat:37.8699,lng:32.4993},
content:'<h1>Kapu Camii</h1>'
},
{
coords:{lat:37.8749,lng:32.4931},
content:'<h1>Karatay Madrasa</h1>'
},
{
coords:{lat:37.8749,lng:32.4931},
content:'<h1>Karatay Madrasa</h1>'
},
{
coords:{lat:37.8749,lng:32.4931},
content:'<h1>Karatay Madrasa</h1>'
}
];
现在当javascript对象'obj'具有与标记元素相同数量的嵌套对象时,它可以正常工作但是当'obj'具有更多嵌套对象而不是markers数组时元素有问题。我只想将'obj'中的其余嵌套对象添加到标记中。当我在for循环中添加新元素时,为什么标记数组不会增长?
答案 0 :(得分:1)
这个怎么样?
数组不应该动态增长。你可以使用push / pop方法。
markers = [];
for (i = 0; i < obj.results.bindings.length; i++) {
markers.push({
content : obj.results.bindings[i].placeName.value,
coords : {
lat : Number(obj.results.bindings[i].lat.value),
lng : Number(obj.results.bindings[i].long.value)
}
})
}
我再次尝试使用您的代码:
for (i = 0; i < obj.results.bindings.length; i++) {
markers[i] = {};
markers[i].content = obj.results.bindings[i].placeName.value;
markers[i].coords= {};
markers[i].coords.lat = Number(obj.results.bindings[i].lat.value);
markers[i].coords.lng = Number(obj.results.bindings[i].long.value);
}
我猜你没有将类型指定为对象,所以它出错了。
如果这也有效,请告诉我。
答案 1 :(得分:1)
您可以使用forEach
的{{1}}然后构建您想要的每个标记,并最终按如下方式插入数组
obj.results.bindings