gpt4 book ai didi

javascript - 如何在 Javascript 中创建数组的数组?

转载 作者:行者123 更新时间:2023-11-28 11:57:57 25 4
gpt4 key购买 nike

我已经为此绞尽脑汁有一段时间了,所以我终于崩溃了,决定寻求意见。

我必须构造一个使用坐标数组来勾画 map 轮廓的对象。我创建了一个数组的数组(至少我是这么认为的),这样我就可以迭代长度并创建所需的任意数量的对象。问题是,我的数组中的值是字符串 - 它们实际上并没有引用数组。然后该对象会生气并说这是一个无效参数。

我尝试使用 split(),但似乎没有效果。我已经手动输入路径:boundaries0,这似乎工作得很好。我已经看这个太久了,我想我已经失去了脑细胞。如果有人能让我走上正确的道路,那就太棒了。

var arrays = 50; //Set this to how many arrays are created.

var boundariesAr = new Array;
var boundaries = new Array;
for(i=0;i<arrays;){
boundariesAr.push('boundaries' + i);
i++;
};

for(j=0;j<boundariesAr.length;){
var serviceArea = "serviceArea" + j;
var currentArray = boundariesAr[j];
var currentItem = currentArray.split(" ");

serviceArea = new google.maps.Polygon({
path:currentItem,
geodesic:true,
strokeColor:'#000',
strokeOpacity:1.0,
strokeWeight:2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
serviceArea.setMap(map);
j++;
};

编辑 - 更新的代码(仅一个片段)这是数组的 chop View :

var boundaries0 = [
new google.maps.LatLng(65.307997,-146.130689),
new google.maps.LatLng(65.291840,-146.198712),
];
var boundaries1 = [
new google.maps.LatLng(64.703884,-147.150958),
new google.maps.LatLng(64.703189,-147.155442),
];


var arrays = 50; //boundaries0[],boundaries1[], etc

var boundariesAr = new Array;

for(var i=0;i<arrays;i++){
boundariesAr.push(boundaries);
};
for(var j=0;j<boundariesAr.length;j++){
var serviceArea = "serviceArea" + j;
var currentArray = boundariesAr[j];
var currentItem = currentArray.split(" ");

serviceArea = new google.maps.Polygon({
path:currentItem,
geodesic:true,
strokeColor:'#000',
strokeOpacity:1.0,
strokeWeight:2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
serviceArea.setMap(map);
};

感谢一些出色的人抽出时间来提供帮助。如果可以的话我会给你买饮料。

这终于奏效了 - (我觉得一开始就没有嵌套数组很愚蠢)

var boundaries = [];
boundaries[0] = [
new google.maps.LatLng(65.307997,-146.130689),
new google.maps.LatLng(65.291840,-146.198712),
];
boundaries[1] = [
new google.maps.LatLng(64.703884,-147.150958),
new google.maps.LatLng(64.703189,-147.155442),
];

var arrays = 50; //Set this to how many arrays are created.

for(var j=0;j<arrays;j++){

serviceArea = new google.maps.Polygon({
path:boundaries[j],
geodesic:true,
strokeColor:'#000',
strokeOpacity:1.0,
strokeWeight:2,
fillColor: '#FF0000',
fillOpacity: 0.35
});
serviceArea.setMap(map);
};

最佳答案

boundariesAr.push('boundaries' + i)正在推送 "boundaries"字符串连接等等i在你的循环中(你最终会得到 50 个字符串: "boundaries0""boundaries49" )。您应该更改此设置以推送实际的 Array你想要插入的物体。哦,并确保将迭代变量声明为非全局变量(通过使用 var ),以便 i不是全局变量 - 这会非常糟糕。

//                         V---------------here-------------
for(var i = 0; i < arrays; i++){ // |
boundariesAr.push(boundaries); // |
//i++; /*no need for this, just put it in the for loop - */
};

在此之后,您似乎想运行 split()在你的阵列上,这会让你悲伤。 split()用于字符串,因此您可以将字符串拆分为由传入 split() 的任何字符分隔的数组。 。例如,"Hello I am dog".split(" ")将创建数组 ["Hello", "I", "am", "dog"] 。但是您已经有一个数组,因此除非您需要对该数组进行字符串操作,否则最好删除此行。 (现在看来数组还是空的)。

另一个问题:你设置serviceArea到一个字符串,然后立即用 serviceArea = new google.maps.Polygon({...}) 覆盖它。如果您希望它是一个多边形,则没有理由用 var serviceArea = "serviceArea" + j; 实例化它。 。这样就可以了:var serviceArea = new google.maps.Polygon({...})

关于javascript - 如何在 Javascript 中创建数组的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com