数组玩法(1):下标移位

   偶然间发现数组的有很多很多值得我们去探讨的东西,在As世界里面,数组扮演一个重要的角色,然而数组的操作也是非常多。包括常见,复制,添加,删除,合并,遍历等等的操作。有时候,不查看文档也会经常忘记这种操作。数组的操作很多,我们会经常使用到这些方式来应用到我们的设计当中。

 

今天第一种的玩法是数组下标移位。

 

一、下标移位

 下标移位从字眼可以看出就是移动数组当中的下标的增益过程,他就像指针一样指向另外一个地址空间。而在flash里面,我姑且把这种玩法叫作下标移位,作一个名称。接下来就介绍一下这个下标移位的方法和操作

 

假设:array=[1,2,3,4,5,6,7,8,9,10];

这样一个数字,我们用一个变量n值替代具体的下标

array[n]=? 这样就不知道n是多少呢?

 

我们初始化var n:int=0;这样n的值就有了一个初始值0.

 

我们玩法开始了,如果我们希望数组下标向高位移动的时候,这样最简单的方法就是n++,当增益到一个幅度的时候,n值不能超越数组的长度0<= n<=array.length。这样我们下标就产生一个移位的过程。就像动画帧一样移动。

 

如果我们从高位递减移动下标,n--。这样当他增益到一个幅度的时候,他又会回到原来的位置n=0;

 

这样的做法是让这种n值产生一个动的效应。数组就会呈现不动的内容。就举例:数组里面存取10张不同的图片。我们利用键盘上下移动让数组下标产生变化,这样就会产生了不同的画面。

 

如果觉得喜欢,可以尝试一下这一的玩法。

 

 

二 遍历数组

 

  来到第二种的玩法,我们会发现内容其实跟下标移位是差不多,只是我们访问的数组的时候,需要借助循环的思想来进行,让下标产生移位递增或者递减的效应。

  for(var i:int=0;i<array.length;i++)

 {

 

    array[i]=0;//这样 我们就对每一个数组赋予了新的值,同样访问了每一个数组

  trace(array[i]);//输出每一个值出来。

 }

 

同理可以使用for in 或者 for each in 进行访问,前者是处理键,后者处理值。

 

这种方式多种多样,在我们的语言设计当中是经常使用的。

 

以上两点是经常使用到。对数组下标的一种处理的手法。

 

而for in 和for each in 是封装了的迭代器模式,这种模式已经应用到as语言里面去。

 

好现在想一想?遍历数组都是按顺序进行吗?我们下标移位是否一定要遵循顺序模式进行吗?

答案 不一定。按顺序遍历是数组操作当中最常见的一种方式,然而下标移动可以是不确定,也就是在数组长度允许范围内,可以进行随机选取。这样,我们在制作抽奖程序的时候,或者制作一个随机数的时候,就会派上用场。

下标移动具有不确定因素。 

 

  遍历不就是访问吗?对,是对数据一种访问。数组是一种常见的数据结构,这种数据结构,具体一定特性。同样在数据当中有一些做法,如队列,堆栈或者树,或者图,这样的数据结构,可以通过一定的条件,转变为数组进行存取,这样当我们遍历的时候就简单了。在as 里面的数组是动态可变,这样有利于动态分配内存。减少不必要的内存开销。

 

 

三 数组增减

  由于下标移动看起来就像动画帧一样,产生一种像动画过程。我们玩过贪食蛇都知道,每吃一个食物,贪食蛇的蛇身就相应就进行改变,这种改变可以是增加,也可以是递减的(吃错食物或碰撞其他)。flash里面增加或者数组长度的也是一种常用的手段,每当数组发生长度改变,下标移动就会相应改变增益的幅度就会相应改变。

   如array.push()的方法,使用这个方法,数组的长度就发生递增的增长,这种长度的增益在flash里面是用得比较广,可以应用在管理层面上。举例管理new 出来的对象,把这些对象用数组进行管理。

    同理,有增加自然有减少,两者体现一种矛盾。

   如array.pop(). or array.splice(填写参数) or array.shift();这样的方法都是可以删除数组的元素。注意splice的用法同样可以增加数组的长度,这个比较特别。用起来需要注意。

  

四 改变数组形态

    数组有什么形态?听起来是否觉得奇怪?然而细心发现,改变数组的长度,我们形态也会发生相应改变,就像人的身高一样,由一种形态向另外一种状态转变,组合一种新的数组。

改变数组形态,我们的方法很多。可以使用递归来返回一种新的数组形态,也可以抽取。打个比方。

array=[1,1,1,2,2,2,3,3,3]

这种数组,看起来比较简单。现在我们抽取一部分来组合一个新的数组,例如我们希望在这里数组当中我只是希望要1的,2,3都不要

array=[1,1,1]

array=[1,1,1,2,2,2,3,3,3] ------>array=[1,1,1]

看看他们形态是否改变了?长度改变了,而且内容也改变了。

抽取数组当中内容,在数组操作过程中是非常见一种手法。我们希望改变数组,抽取一部分需要的数据,

同样也可以补充一部分内容,如push,or slice 一下。这样新的数组形态就出现了。

譬如:array=[11,22,33,44],长度为4

利用这个方法,当我们改变值array=[0,0,33,44]的时候,通过getNewArray的方式,从而让旧的数组获取一种新的形态,同样可以想象为减肥。

好,以上的方式,还有很多,笔者会抽取时间进行补充。如果有意见或者不对情况依然可以评论,笔者会尽量修改达到完善的。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值