`

AS3数组学习

 
阅读更多

indexOf lastIndexOf

返回索引,查找不到返回-1

var arr:Array = ["a","b","c","d","e","f","g"]; 
arr.indexOf("e"); 
arr.indexOf("b",2);//从第3个元素开始查找 
arr.lastIndexOf("b",2);//从第3个元素反向查找

push unshift

在首尾插入元素,返回增加元素后数组的长度

var arr:Array = ["a","b","c","d","e","f","g"]; 
arr.push("h");//在数组尾部插入元素h 
arr.push("i","j","k");//在数组尾部插入多个元素 
arr.unshift("h");//在数组头部插入元素h 
arr.unshift("i","j","k");//在数组头部插入多个元素

pop shift

删除首尾元素,返回被删除的元素

var arr:Array = ["a","b","c","d","e","f","g"]; 
arr.pop();//删除尾元素 
arr.shift();//删除首元素 

splice

删除数组一段连续的元素,返回被删除的元素数组

var arr:Array = ["a","b","c","d","e","f","g"]; 
arr.splice(删除点的索引,要删除的个数,新元素1,新元素2); 
arr.splice(2,3,"o","p","q");//从索引为2开始,删除3个元素,并插入3个新元素"o","p","q"
arr.splice(-2,3,"o","p","q");//从倒数为2的索引开始,删除3个元素,并插入3个新元素"o","p","q"
arr.splice(2,3);//单纯的删除从索引2开始的3个元素(不插入) 
arr.splice(2);//单纯的删除从索引2开始的所有元素(不插入) 
arr.splice(2,0,"x","y","z");//在索引2的后面插入3个新元素(不删除)

slice

获取数组中的部分元素

var arr:Array = ["a","b","c","d","e","f","g"]; 
var newArr:Array = arr.slice();//浅复制数组 
var newArr:Array = arr.slice(2); 
var newArr:Array = arr.slice(-2); 
var newArr:Array = arr.slice(2,5); 

concat

将多个元素或数组拼接成一个新数组

var arr:Array = ["a","b","c","d","e","f","g"]; 
var newArr = arr.concat("x","y","z");//原数组不变,新数组是原数组拼接后的结果 
var newArr = arr.concat();//浅复制数组

reverse

将数组倒序排列

var arr:Array = ["a","b","c"]; 
arr.reverse();//得到"c","b","a" 

sort

sort() 按默认排序,注意:区分大小写,数字也是按字符串来处理

var arr:Array = ["b","c","a"]; 
arr.sort();//得到"a","b","c" arr = ["210","1111","30"]; 
arr.soft();//得到"1111","210","30" arr = ["b","X","A","c"]; 
arr.sort();//得到"A","X","b","c"
var arr:Array = ["b","C",235,"a",38,"X",8641]; 
trace(arr.sort());//得到235,38,8641,C,X,a,b

sort(args) 按参数排序,一共有5种(注意:除了Array.RETURNINDEXEDARRAY,其它方式只要排序成功,都会实际改变数组)

1. sort(Array.CASEINSENSITIVE) 同sort(),不过不区分大小写,数字也是按字符串来处理

var arr = ["b","X","A","c"]; 
arr.sort(Array.CASEINSENSITIVE);//得到"A","b","c","X"

2. sort(Array.DESCENDING) 按字符串的倒序排列,区分大小写,数字也是按字符串来处理

var arr:Array = ["b","C","a","X",235,8641,38]; 
trace(arr.sort(Array.DESCENDING));//得到b,a,X,C,8641,38,235

3. sort(Array.UNIQUESORT) 同sort(),如果数组有相同元素,则放弃排序,返回0

var arr:Array = ["b","C","a","X",235,8641,38,2365]; 
if(arr.sort(Array.UNIQUESORT)=="0") 
{  
    trace("有相同元素"); 
} 
else 
{  
    trace("没有相同元素"); 
}

4. sort(Array.RETURNINDEXEDARRAY) 同sort(),返回排序后的索引列表,原数组不变

var arr:Array = ["b","C","a","X",235,8641,38,2365]; 
trace(arr.sort(Array.RETURNINDEXEDARRAY));//得到4,7,6,5,1,3,2,0 
trace(arr);//得到b,C,a,X,235,8641,38,2365(原数组)

5. sort(Array.NUMERIC) 按数字从小到大排序,如果数组里含有非数字,会抛出异常

var arr:Array = [235,8641,38,2365]; 
trace(arr.sort(Array.NUMERIC));//得到38,235,2365,8641

sort(函数名) 按自定义函数比较,该函数必须接受2个参数,返回值为1、-1、0

public function Sample1008() 
{ 
    var objA:Object = {price:200,quantity:2}; 
    var objB:Object = {price:400,quantity:4}; 
    var objC:Object = {price:100,quantity:1}; 
    var arr:Array = [objA,objB,objC]; 
    trace("原数组是:"); 
    for(var i:int=0;i<arr.length;i++) 
    { 
        trace(arr[i].price); 
    } 
    arr.sort(Compare); 
    trace("排序后的数组是:"); 
    for(var j:int=0;j<arr.length;j++) 
    { 
        trace(arr[j].price); 
    } 
} 
private function Compare(paraA:Object,paraB:Object):int 
{ 
    var totalPriceA:int = paraA.price * paraA.quantity; 
    var totalPriceB:int = paraB.price * paraB.quantity; 
    if(totalPriceA>totalPriceB) 
    { 
        return 1; 
    } 
    else if(totalPriceA<totalPriceB) 
    { 
        return -1; 
    } 
    else 
    { 
        return 0; 
    } 
} 
/*运行结果是 
原数组是: 
200 
400 
100 
排序后的数组是: 
100 
200 
400*/

sortOn

常用于对象数组的排序

var obj1:MyClass = new MyClass(); 
var obj2:MyClass = new MyClass(); 
var obj3:MyClass = new MyClass(); 
obj1.orderID = 300; 
obj2.orderID = 100; 
obj3.orderID = 200; 
var arr:Array = [obj1,obj2,obj3]; 
//trace(arr.sortOn("orderID")); 
trace(arr.sortOn("orderID",Array.RETURNINDEXEDARRAY));//得到索引1,2,0

every

判断数组里的每个元素是否满足某些条件,只有全部都满足才为true

public function Sample1008() 
{ 
    //必须5个人都满70级,才可以进副本
   var player1:Object = {name:"wayne",level:70}; 
    var player2:Object = {name:"tom",level:69}; 
    var player3:Object = {name:"jacky",level:70}; 
    var player4:Object = {name:"andy",level:68}; 
    var player5:Object = {name:"bill",level:70}; 
     
    var playerList:Array = [player1,player2,player3,player4,player5]; 
    if(!playerList.every(CheckLevel)) 
    { 
        trace("队伍中有人等级未到70,无法进入副本"); 
    } 
} 
private function CheckLevel(item:*,index:int,arr:Array):Boolean 
{ 
    if(item.level<70) 
    { 
       //trace(item.name+"等级未到70,无法进入副本"); 
        return false; 
    } 
    return true; 
}

map

映射器,逐个处理数组中的元素,最后生成一个修改后的新数组(不会更改原数组)

public function Sample1008() 
{ 
    var player1:Object = {name:"wayne",level:70}; 
    var player2:Object = {name:"tom",level:69}; 
    var player3:Object = {name:"jacky",level:70}; 
    var player4:Object = {name:"andy",level:68}; 
    var player5:Object = {name:"bill",level:70}; 
     
    var playerList:Array = [player1,player2,player3,player4,player5]; 
     
    for(var i:int = 0; i<playerList.length; i++) 
    { 
        trace("player"+(i+1)+"的所有属性是:"); 
        for(var attr:String  in  playerList[i]) 
        { 
            trace(attr+":"+playerList[i][attr]); 
        } 
    } 
     
   //为每个玩家添加新属性"声望值"
    var newArray:Array = playerList.map(AddNewAttribute); 
     
    trace("-----------------Map后的结果-----------------"); 
     
    for(var j:int = 0; j<newArray.length; j++) 
    { 
        trace("player"+(j+1)+"的所有属性是:"); 
        for(var attr2:String  in  newArray[j]) 
        { 
            trace(attr2+":"+newArray[j][attr2]); 
        } 
    } 
} 
private function AddNewAttribute(item:*,index:int,arr:Array):Object 
{ 
    var tmpPlayer:Object = {}; 
    tmpPlayer.name = item.name; 
    tmpPlayer.level = item.level; 
    tmpPlayer.repute = 99; 
    return tmpPlayer; 
}

some

判断数组里的每个元素是否满足某些条件,只要有一个满足就返回true

public function Sample1008() 
{ 
   //只要队伍里有一个人声望达到140以上,则全队可以进副本 
   var player1:Object = {name:"wayne",level:70,repute:100}; 
    var player2:Object = {name:"tom",level:70,repute:190}; 
    var player3:Object = {name:"jacky",level:70,repute:50}; 
    var player4:Object = {name:"andy",level:70,repute:230}; 
    var player5:Object = {name:"bill",level:70,repute:120}; 
     
    var playerList:Array = [player1,player2,player3,player4,player5]; 
     
    if(playerList.some(CheckRepute)) 
    { 
        trace("可以进入副本"); 
    } 
    else 
    { 
        trace("队伍里没有成员声望达到140,无法进入副本"); 
    } 
} 
private function CheckRepute(item:*,index:int,arr:Array):Boolean 
{ 
    if(item.repute>=140) 
    { 
        return true; 
    } 
    return false; 
}

filter

将数组里满足特定条件的元素提取出来,生成一个新数组

public function Sample1008() 
{ 
   //得到队伍里所有声望达到要求的成员 
   var player1:Object = {name:"wayne",level:70,repute:100}; 
    var player2:Object = {name:"tom",level:70,repute:190}; 
    var player3:Object = {name:"jacky",level:70,repute:50}; 
    var player4:Object = {name:"andy",level:70,repute:230}; 
    var player5:Object = {name:"bill",level:70,repute:120}; 
     
    var playerList:Array = [player1,player2,player3,player4,player5]; 
     
    var newArray:Array = playerList.filter(CheckRepute); 
     
    for(var i:int=0; i<newArray.length; i++) 
    { 
        for(var attr:String  in  newArray[i]) 
        { 
            trace(attr+":"+newArray[i][attr]); 
        } 
    } 
} 
private function CheckRepute(item:*,index:int,arr:Array):Boolean 
{ 
    if(item.repute>=140) 
    { 
        return true; 
    } 
    return false; 
}

forEach

对数组里的元素逐个进行操作,实际改变了数组(不同于map)

public function Sample1008() 
{ 
   //在每个玩家名字前面加上公会名称 
   var player1:Object = {name:"wayne",level:70,repute:100}; 
    var player2:Object = {name:"tom",level:70,repute:190}; 
    var player3:Object = {name:"jacky",level:70,repute:50}; 
    var player4:Object = {name:"andy",level:70,repute:230}; 
    var player5:Object = {name:"bill",level:70,repute:120}; 
     
    var playerList:Array = [player1,player2,player3,player4,player5]; 
     
    playerList.forEach(BuildName); 
     
    for(var i:int=0; i<playerList.length; i++) 
    { 
        for(var attr:String  in  playerList[i]) 
        { 
            trace(attr+":"+playerList[i][attr]); 
        } 
    } 
} 
private function BuildName(item:*,index:int,arr:Array):void 
{ 
    item.name = "暗界--"+item.name; 
}
分享到:
评论

相关推荐

    AS3.0数组的运用

    as3.0代码在字符串数组转换上的运用,是一个不错的学习材料

    flash AS3 数组冒泡

    ### Flash AS3 数组冒泡排序详解 #### 冒泡排序简介 冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复进行的,直到没有...

    新技术培训 培训讲义2_AS3数组.doc

    【新技术培训 培训讲义2_AS3数组.doc】这篇文档主要讲解了ActionScript 3中的数组概念、声明方式以及一系列的操作函数。数组在计算机编程中是一个基础且重要的数据结构,它允许我们存储和操作多个同类型或异类型的...

    flash AS3 自学教程

    在深入学习Flash ActionScript 3(简称AS3)的过程中,了解和掌握其核心概念与语法是至关重要的。AS3是Flash平台的主要编程语言,用于创建交互式动画、游戏以及丰富的互联网应用程序。本教程将带你一步步走进AS3的...

    as3,二维数组的建立和使用

    关于as3中二维数组的建立和使用,初学flash动作编程的同学学习下。。。

    VBA数组学习笔记.pdf

    VBA 数组学习笔记 VBA 数组学习笔记是指在 Visual Basic for Applications(VBA)中对数组的学习和应用。数组是 VBA 编程中非常重要的一部分,它可以用来存储和处理大量的数据。 数组的声明 在 VBA 中,数组的...

    php数组学习之一

    本篇文章将聚焦于“php数组学习之一”,深入探讨PHP数组的基础概念、类型、创建方式以及一些常用的数组操作函数。 首先,PHP中的数组分为索引数组和关联数组两种类型。索引数组是由数字索引(默认从0开始)组成的...

    VBA数组的学习笔记,让你更好的了解数组

    ### VBA数组学习笔记 #### 一、数组的声明与初始化 在VBA中,数组是一种非常重要的数据结构,用于存储一系列同类型的值。数组的声明与其他变量类似,可以通过`Dim`、`Static`、`Private`或`Public`语句进行。与...

    as3corelib-.92.11.rar_as 3 corelib_as3_as3corelib_as3corelib API

    AS3CoreLib是ActionScript 3(AS3)的一个重要扩展库,被广泛用于增强标准AS3类库的功能。这个库是由Adobe官方推荐的,它...通过学习和使用AS3CoreLib,你可以编写出更加高效、易维护的代码,同时提升你的开发技能。

    VBA数组基础学习.txt

    ### VBA数组基础学习知识点详解 #### 一、VBA数组概述 VBA(Visual Basic for Applications)是一种广泛应用于Microsoft Office等应用中的编程语言。在VBA中,数组是一种非常重要的数据结构,它允许程序员组织并...

    Visual Basic 数组ppt

    本篇文章将深入探讨“Visual Basic 数组”这一主题,主要基于提供的"第四章 数组.ppt"的学习资料。 数组在编程中扮演着关键角色,它允许程序员一次性处理多个数据。在VB中,数组分为一维数组、二维数组和多维数组。...

    动态数组的使用快速创建数组(VB6.0代码编写)

    动态数组在编程中是一种非常重要的数据结构,尤其...通过学习和实践这些知识点,你将能够熟练地在VB6.0中使用动态数组,以适应各种编程需求。动态数组是编程中的一种基础工具,理解和掌握它对于提升编程能力至关重要。

    vba返回数组类型vba返回数组类型vba返回数组类型

    根据提供的标题、描述、标签及部分内容,我们...- **函数返回数组**:学习如何定义返回数组的函数,并在函数中填充数据。 通过这些知识点的学习,开发者可以更好地理解和运用VBA中的数组处理技术,提高程序设计能力。

    VB 多维数组实例

    通过这些实例,学习者可以更好地理解和掌握多维数组的使用方法。 总之,VB中的多维数组是处理复杂数据结构的关键工具,熟练掌握其用法能够极大地提高代码的效率和可读性。在实际编程中,应根据具体需求选择合适的...

    VB_08 数组 定义

    数组的基本概念、定义语句以及操作规则是学习过程中不可或缺的部分。 数组的定义: 在VB中,数组可以看作是同一种数据类型的变量集合。每个元素都有自己的索引或位置,通过索引可以访问和修改这些元素。数组的定义...

    关于VB中的数组教程,数组的概念,动态数组的建立与声明

    Dim tableArray(3, 4) As String '3行4列的表格 ``` 总的来说,理解和掌握VB中的数组是提高编程效率的关键。通过动态数组,我们可以灵活地处理各种规模的数据,而无需每次都创建新的变量。在实际项目中,善用数组能...

    as3学习文档

    ### AS3 学习知识点详解 #### 一、布尔类型(Boolean) 在 AS3 中,布尔类型用于存储逻辑值 `true` 和 `false`。它主要用于条件判断和循环控制等场景。 **示例代码:** ```as3 var flag:Boolean = true; if ...

    VB 静态数组实例

    通过学习这些实例,你可以更直观地理解静态数组的用法,并提升编程技能。 总的来说,VB中的静态数组是编程中不可或缺的一部分,熟练掌握其使用能够帮助我们编写出更高效、更简洁的代码。在实际编程过程中,需要根据...

    Flex AS3学习笔记总结

    Flex AS3 学习笔记总结 Flex 是 Adobe 开发的 RIA(Rich Internet Applications)工具,包括 Flex3 SDK、Flex Builder 和服务器产品,如 Lifestyle Data Services、CodeFushion。Flex 应用程序用 Flash.swf 文件...

    03-python-数组方法-数组排序-数组形状-对角线

    2. `astype()`: 将数组转换为另一种数据类型。 3. `reshape()`: 改变数组的形状,不改变其元素。 4. `flatten()`: 将多维数组转换为一维数组。 5. `transpose()`: 转置数组,交换行和列。 6. `concatenate()`, `...

Global site tag (gtag.js) - Google Analytics