存储多维数据(转)怎样存储多组相关的数据解决办法使用多维数组存储讨论除了一维数组,还可以创建多维数组,
存储多维数据(转)
怎样存储多组相关的数据
解决办法
使用多维数组存储
讨论
除了一维数组,还可以创建多维数组,比如beginGradientFill() 方法使用三个平行数组表示colors, alphas, 和ratios ,每个数组都有相同的下标。
创建平行数组,然后操作同一下标的元素,使用平行数组,很容易访问同一下标的相关元素,比如:
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
}
需要注意的是,如果改变了数组长度,必须同时修改其他数组。
另一种方法就是创建多维数组,它是数组的数组:
//?创建数组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]);
}
下面的代码用二重循环遍历二维数组:
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]这种表示就很被动,需要修改代码才行。
另外对象数组的使用也很类似,只是多了个名称属性。对象数组用名称属性代替数字下标来索引元素:
//?创建数组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);
}