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试图找到
    标记
    变量的值
  • 然后它尝试获取该值的属性,该属性的名称等于
    j
    (循环的第一步为0)
  • 然后它尝试获取上一步中找到的值的
    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;idocument.write(''+JSON.stringify(markers,0,4)+'')您缺少
latLng
数组的结束
]
。在本例中,
latLng
中的值是数字而不是字符串;即使是
标记
也不会自动创建。更新了答案(并转到更简单的
.push
)。如果
标记
不是数组,则错误消息将略有不同
类型错误:无法设置属性“0”…
。所以请忘记我的评论:)