Javascript多维数组错误
我有这样一个数组:Javascript多维数组错误,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有这样一个数组: var ret = ["-37.8497", "144.968", "Albert Park Grand Prix Circuit", "2.76083", "101.738", "Sepang International Circuit","26.0325", "50.5106", "Bahrain International Circuit",...] var markers = [ {latLng: [45.616944, 9.2825], name: 'Ital
var ret = ["-37.8497", "144.968", "Albert Park Grand Prix Circuit", "2.76083", "101.738", "Sepang International Circuit","26.0325", "50.5106", "Bahrain International Circuit",...]
var markers = [
{latLng: [45.616944, 9.2825], name: 'Italian Grand Prix'},
{latLng: [52.0732605, -1.0166426], name: 'British Grand Prix'},
{latLng: [43.7345, 7.4214], name: 'Monaco Grand Prix'},
{latLng: [49.332, 8.58], name: 'German Grand Prix'}, ...]
我希望它是这样的:
var ret = ["-37.8497", "144.968", "Albert Park Grand Prix Circuit", "2.76083", "101.738", "Sepang International Circuit","26.0325", "50.5106", "Bahrain International Circuit",...]
var markers = [
{latLng: [45.616944, 9.2825], name: 'Italian Grand Prix'},
{latLng: [52.0732605, -1.0166426], name: 'British Grand Prix'},
{latLng: [43.7345, 7.4214], name: 'Monaco Grand Prix'},
{latLng: [49.332, 8.58], name: 'German Grand Prix'}, ...]
我实现了这个功能:
var j=0;
for (i = 0; i < ret.length; i+=3)
{
markers[j].latLng[0] = ret[i];
markers[j].latLng[1] = ret[i+1];
markers[j].name = ret[i+2];
j++;
}
在for的第一行中
我在谷歌上搜索了一段时间,但似乎javascript并不真正支持多重数组。你能帮我找到正确的实现方法吗?你必须手动创建一个对象。这里有一种可能的方法:
var markers = [];
for (var i = 0; i < ret.length; i+=3) {
markers.push({
latLng: [ret[i], ret[i+1]],
name: ret[i+2]
});
}
。。。处理方式如下:
- 首先,JS试图找到
变量的值标记
- 然后它尝试获取该值的属性,该属性的名称等于
(循环的第一步为0)j
- 然后它尝试获取上一步中找到的值的
属性latLng
- 最后,该值的
属性用0
值填充ret[i]
显然,如果这些步骤中的任何一个导致
undefined
,则随后尝试查询undefined
的任何属性会导致错误 您需要两个小改动:
var ret=[“-37.8497”、“144.968”、“阿尔伯特公园大奖赛赛道”、“2.76083”、“101.738”、“雪邦国际赛道”、“26.0325”、“50.5106”、“巴林国际赛道”],
标记=[],
i、 j=0;
对于(i=0;i document.write(''+JSON.stringify(markers,0,4)+'')代码>您缺少latLng
数组的结束]
。在本例中,latLng
中的值是数字而不是字符串;即使是标记
也不会自动创建。更新了答案(并转到更简单的.push
)。如果标记
不是数组,则错误消息将略有不同类型错误:无法设置属性“0”…
。所以请忘记我的评论:)