5.9.存储多维数据

问题
我要怎样存储多组相关的数据
解决办法
使用多维数组存储
讨论
除了一维数组,还可以创建多维数组,比如beginGradientFill() 方法(在第7章讨论)使用三个平行数组表示colors, alphas, 和ratios ,每个数组都有相同的下标。

创建平行数组,然后操作同一下标的元素,使用平行数组,很容易访问同一下标的相关元素,比如:
+展开
-ActionScript
var colors:Array = ["maroon""beige""blue""gray"];
var years:Array = [1997, 2000, 1985, 1983];
var makes:Array = ["Honda""Chrysler""Mercedes""Fiat"];
// 循环这些数组,因此数组的长度相同,可以用任何一个数组的length属性,下面的例子使用了
//makes.length.
for (var i:int = 0; i < makes.length; i++) {
trace("A " + colors[i] + " " +
years[i] + " " +
makes[i]);
// 显示:
// A maroon 1997 Honda
// A beige 2000 Chrysler
// A blue 1985 Mercedes
// A gray 1983 Fiat
}

需要注意的是,如果改变了数组长度,必须同时修改其他数组。

另一种方法就是创建多维数组,它是数组的数组:
+展开
-ActionScript
// 创建数组cars,然后用数组组装填充,每个元素都是数组包含3个元素(color, year, make).
var cars:Array = new Array();
cars.push(["maroon", 1997, "Honda"]);
cars.push(["beige", 2000, "Chrysler"]);
cars.push(["blue", 1985, "Mercedes"]);
cars.push(["gray", 1983, "Fiat"]);
// 循环遍历数组
for (var i:int = 0; i < cars.length; i++) {
// 显示:
// A maroon 1997 Honda
// A beige 2000 Chrysler
// A blue 1985 Mercedes
// A gray 1983 Fiat
TRace("A " + cars[i][0] + " " +
cars[i][1] + " " +
cars[i][2]);
}

下面的代码用二重循环遍历二维数组:
+展开
-ActionScript
for (var i:int = 0; i < cars.length; i++) {
for (var j:int = 0; j < cars[i].length; j++) {
TRace("Element [" + i + "][" + j + "] contains: " +
cars[i][j]);
}
}

从上面的例子来看,很难区别cars[i][0] 和cars[i][j]。但如果任何数组的长度发生变化这时cars[i][0]这种表示就很被动,需要修改代码才行。

另外对象数组的使用也很类似,只是多了个名称属性。对象数组用名称属性代替数字下标来索引元素:
+展开
-ActionScript
// 创建数组cars,填充对象
// 每个对象有个make 属性,year 属性和color 属性
var cars:Array = new Array();
cars.push({make: "Honda", year: 1997, color: "maroon"});
cars.push({make: "Chrysler", year: 2000, color: "beige"});
cars.push({make: "Mercedes", year: 1985, color: "blue"});
cars.push({make: "Fiat", year: 1983, color: "gray"});
// 遍历数组
for (var i:int = 0; i < cars.length; i++) {
trace("A " + cars[i].color + " " +
cars[i].year + " " +
cars[i].make);
}

加支付宝好友偷能量挖...


评论(0)网络
阅读(61)喜欢(0)flash/flex/fcs/AIR