当前位置: 代码迷 >> Web前端 >> 储存多维数据(转)
  详细解决方案

储存多维数据(转)

热度:143   发布时间:2012-11-07 09:56:10.0
存储多维数据(转)

怎样存储多组相关的数据
解决办法
使用多维数组存储
讨论
除了一维数组,还可以创建多维数组,比如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);
}
  相关解决方案