编写ARRAYS的最佳实践

Dou*_*las 0 javascript arrays

我有一个包含大约250个条目的数组,每个条目都有自己的值数组.每个条目都是地图上的一个点,每个数组都包含以下信息:

name,此点可以连接的点的另一个数组,纬度,经度,名称的缩写,布尔值和另一个布尔值

该数组由我团队中的另一位开发人员编写,他已经编写了这样的代码:

names[0]=new Array;
names[0][0]="Campus Ice Centre";
names[0][1]= new Array(0,1,2);
names[0][2]=43.95081811364498;
names[0][3]=-78.89848709106445;
names[0][4]="CIC";
names[0][5]=false;
names[0][6]=false;

names[1]=new Array;
names[1][0]="Shagwell's";
names[1][1]= new Array(0,1);
names[1][2]=43.95090307839151;
names[1][3]=-78.89815986156464;
names[1][4]="shg";
names[1][5]=false;
names[1][6]=false;
Run Code Online (Sandbox Code Playgroud)

在那里我可能会亲自写下这样的:

    var names = []
    names[0] = new Array("Campus Ice Centre", new Array[0,1,2], 43.95081811364498, -78.89848709106445, "CIC", false, false);
    names[1] = new Array("Shagwell's", new Array[0,1], 43.95090307839151, -78.89815986156464, 'shg", false, false);
Run Code Online (Sandbox Code Playgroud)

它们当然都很好用,但我想知道的是:

1)实际处理一个比另一个花费更长的时间吗?2)我是否认为对我的同一件事的版本的紧凑性有好处?

我只是有点担心他的3000行代码而不是我的3-400才能得到相同的结果.

提前感谢任何指导.

luk*_*uke 6

您真正想要做的是定义一种自定义数据类型,它可以更准确地表示您的数据.我不确定你使用的语言是什么,所以这里有一些伪代码:

class Location
{
    double latitude;
    double longitude;
    String Name;
    String Abbreviation;
    bool flag1;//you should use a better name
    bool flag2;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以创建一个数组来保存所有的Location对象,它将更具可读性和可维护性.

Locations = new Array;
Locations[0] = new Location("Shagwell's",...);
....
Run Code Online (Sandbox Code Playgroud)

===编辑===

因为您说您使用的是javascript,所以最佳做法可能是将数据存储在json文本文件中,这样做的好处是可以从代码文件中删除数据,并且如果要进行更改,则可以使用非常容易编辑的数据源.

你的JSON文件看起来像这样

[{"lat":"23.2323", "long":"-72.3", "name":"Shagwell's" ...},
{"lat":"26.2323", "long":"-77.3", "name":"loc2" ...},
...]
Run Code Online (Sandbox Code Playgroud)

然后,您可以将json文本存储在Web服务器上的可访问位置,例如"data.json",然后如果您使用的是jquery,则可以通过执行以下操作来加载它:

$.getJSON("data.json", function(data) { //do something with the data});
Run Code Online (Sandbox Code Playgroud)