Javascript 如何在数组中填充多个数据类型?

Javascript 如何在数组中填充多个数据类型?,javascript,arrays,Javascript,Arrays,我想填充包含对象和字符串的“标记”数组。我在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.r

我想填充包含对象和字符串的“标记”数组。我在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);

  }
(i=0;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); } 标记数组如下所示(手动填充,而不是按for循环填充)

var标记=[
{
坐标:{lat:37.8707,lng:32.5050},
内容:'Mevlana博物馆'
},
{
坐标:{lat:37.8699,lng:32.4993},
内容:“卡普卡米”
},
{
坐标:{lat:37.8749,lng:32.4931},
内容:“卡拉泰宗教学校”
},
{
坐标:{lat:37.8749,lng:32.4931},
内容:“卡拉泰宗教学校”
},
{
坐标:{lat:37.8749,lng:32.4931},
内容:“卡拉泰宗教学校”
}
];  
现在,当javascript对象“obj”具有与标记元素相同数量的嵌套对象时,它可以正常工作,但当“obj”的嵌套对象多于标记元素时,数组就会出现问题。我只想将“obj”中的其余嵌套对象添加到标记中。当我在for循环中添加新元素时,为什么标记数组不自动增长?

这个怎么样

数组不应动态增长。您可以使用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)
        }
    })

}
markers=[];
对于(i=0;i
我使用下面的代码重试:

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);

}
for(i=0;i
我猜您没有将类型指定为object,所以它出错了

请让我知道这是否也有效。

这个怎么样

数组不应动态增长。您可以使用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)
        }
    })

}
markers=[];
对于(i=0;i
我使用下面的代码重试:

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);

}
for(i=0;i
我猜您没有将类型指定为object,所以它出错了


请让我知道这是否也有效。

您可以使用
对象结果绑定的
forEach
,然后构建所需的每个标记,并最终按如下方式推入数组

让obj={
结果:{
绑定:[
{地名:'cali',纬度:'123',长:'456'},
{地名:'夏威夷',纬度:'555',长:'333'},
{地名:'korea',拉丁语:'777',长语:'888'}]
}
};
让标记=[];
obj.results.bindings.forEach(项=>{
设mar={content:'',coords:{};
mar.content=item.placeName;
mar.coords.lat=编号(项目lat);
mar.coords.lng=编号(项目长度);
马克。推(三月)
})

console.log(markers)
您可以使用
obj.results.bindings的
forEach
,然后构建所需的每个标记,并最终将其推入数组,如下所示

让obj={
结果:{
绑定:[
{地名:'cali',纬度:'123',长:'456'},
{地名:'夏威夷',纬度:'555',长:'333'},
{地名:'korea',拉丁语:'777',长语:'888'}]
}
};
让标记=[];
obj.results.bindings.forEach(项=>{
设mar={content:'',coords:{};
mar.content=item.placeName;
mar.coords.lat=编号(项目lat);
mar.coords.lng=编号(项目长度);
马克。推(三月)
})

console.log(markers)
您的语句不正确,数组将动态增长。您可以尝试这样的简单测试
let arr=[];arr[2]=“abc”console.log(arr)
很抱歉英语不好。我不是这个意思。我把这句话改为“不应该”。很抱歉。我知道数组在javascript中会自动增长,但我不明白为什么我的代码不起作用,不管怎样,您编写的解决方案对我来说是可行的,谢谢!您的语句不正确,数组将动态增长。您可以尝试这样的简单测试
let arr=[];arr[2]=“abc”console.log(arr)
很抱歉英语不好。我不是这个意思。我把这句话改为“不应该”。很抱歉。我知道数组在javascript中会自动增长,但我不明白为什么我的代码不起作用,不管怎样,您编写的解决方案对我来说是可行的,谢谢!