`
luhantu
  • 浏览: 205278 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex Array 的一些有用的操作

    博客分类:
  • Flex
 
阅读更多

我想大家一定都很熟悉Array了吧?我们几乎每天都在和Array 打交道,但是你是否几乎没有注意到Array提供给我们的一些有用的方法呢?

1.Array 的增删改查

1)在数组最后增加一个元素

 

 

var employees:Array = new Array();
employees.push({name:"Employee 1", manager:false});

 

2)在数组最前面增加一个元素

 

var employees:Array = new Array();
employees.push({name:"Employee 1", manager:false,salary:100});
employees.unshift({name:"Employee 2", manager:true,salary:1000});
employees.unshift({name:"Employee 3", manager:false,salary:200});

 

 3)删除数组最后一个元素

 

employees.pop();

 

 4)删除数组第一个元素

 

employees.shift();

 

 5)在第二和第三之前插入一个元素

 

employees.splice(1,0,{name:"Employee 4", manager:false})

 

 6)删除第三个元素

 

employees.splice(2,1)

  2.Array的排序

1).反转Array

 

employees.reverse();

 

 2)Array.sort() 

默认情况下,Array.sort() 按以下方式进行排序:

排序区分大小写(Z 优先于 a)。

按升序排序(a 优先于 b)。

修改该数组以反映排序顺序;在排序后的数组中不按任何特定顺序连续放置具有相同排序字段的多个元素。

元素无论属于何种数据类型,都作为字符串进行排序,所以 100 在 99 之前,这是因为 "1" 的字符串值小于 "9" 的字符串值。

Array.NUMERIC 参数实际上没有将其他数据类型转换为 Number 数据类型,它只是允许排序算法识别数字。如果既有数字又有string,则会报错。

你可以用Array.sort(compareFunction, sortOptions) 改变排序行为。

 

   protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				
				var employees:Array = new Array();
				employees.push({name:"Employee 1", manager:false,salary:100});
				employees.unshift({name:"Employee 2", manager:true,salary:1000});
				employees.unshift({name:"Employee 3", manager:false,salary:200});
				employees.sort(sortOnSalary);
				employees.forEach(traceEmployee);
				employees.sort(sortOnSalary,Array.DESCENDING);
				employees.forEach(traceEmployee);
 			}
			

			private function sortOnSalary(a:Object, b:Object):Number 
			{
				var aSalary:Number = Number(a.salary);
				var bSalary:Number = Number(b.salary);
				
				if(aSalary > bSalary) {
					return 1;
				} else if(aSalary < bSalary) {
					return -1;
				} else  {
					//aPrice == bPrice
					return 0;
				}
			}
			
			private function traceEmployee(element:*, index:int, arr:Array):void {
				trace(element.name + " (" + element.manager + " " + element.salary + ")");
			}

  3.Array的过滤

filter 过滤函数对数组中的每一项执行测试函数,并构造一个新数组,其中的所有项都对指定的函数返回 true。如果某项返回 false,则新数组中将不包含此项。

 

employees = employees.filter(callback);
private function callback(item:*, index:int, array:Array):Boolean
{
	if(item.name == "Employee 5")
	{
		return false;
	}
        return true;
}
				
 

4.Array的建立

 

var myArr:Array = new Array("one", "two", "three");
或者
var myArr:Array = new Array(3);
或者
var numbers:Array = new Array(1, 2, 3);
var letters:Array = new Array("a", "b", "c");
var numbersAndLetters:Array = numbers.concat(letters);
var lettersAndNumbers:Array = letters.concat(numbers);

 

 5.Array的测试

  every(callback:Function, thisObject:* = null):Boolean如果数组中的所有项对指定的函数都返回 true,则为布尔值 true;否则为 false

 

var arr1:Array = new Array(1, 2, 4);
 var res1:Boolean = arr1.every(isNumeric);
 trace("isNumeric:", res1); // true
 
var arr2:Array = new Array(1, 2, "ham");
var res2:Boolean = arr2.every(isNumeric);
trace("isNumeric:", res2); // false


private function isNumeric(element:*, index:int, arr:Array):Boolean {
            return (element is Number);
        }

 

 some(callback:Function, thisObject:* = null):如果数组中的任何一项对于指定的函数都返回 true,则为布尔值 true,否则为 false

 

 

var arr:Array = new Array();
arr[0] = "one";
arr[1] = "two";
arr[3] = "four";
var isUndef:Boolean = arr.some(isUndefined);
if (isUndef) {
	trace("array contains undefined values: " + arr);
} else {
	trace("array contains no undefined values.");
}

private function isUndefined(element:*, index:int, arr:Array):Boolean {
	return (element == undefined);
}

 

 6.Array对每一项的操作

function forEach(callback:Function, thisObject:* = null):void对数组中的每一项执行函数,仅仅是执行而已,不对数组进行修改.

 

 

employees.forEach(traceEmployee);
private function traceEmployee(element:*, index:int, arr:Array):void {
				trace(element.name + " (" + element.manager + " " + element.salary + ")");
			}

 但是如果你在此函数中修改element的其他属性值,那么也会直接改变此数组相应的值.

 

private function traceEmployee(element:*, index:int, arr:Array):void {
				trace(element.name + " (" + element.manager + " " + element.salary + ")");
element.name = "kenny";
			}
 

 

function map(callback:Function, thisObject:* = null):Array 对数组中的每一项执行函数并构造一个新数组,其中包含与原始数组中的每一项的函数结果相对应的项。

 

employees = employees.map(mapTestFunction);
private function mapTestFunction(element:*,index:int,arr:Array):String
{
	return element.name + "kenny";
}

  7.Array 的切片

function slice(startIndex:int = 0, endIndex:int = 16777215):Array 返回由原始数组中某一范围的元素构成的新数组,而不修改原始数组。返回的数组包括 startIndex 元素以及从其开始到 endIndex 元素(但不包括该元素)的所有元素。

 

var letters:Array = new Array("a", "b", "c", "d", "e", "f");
var someLetters:Array = letters.slice(1,3);

trace(letters);     // a,b,c,d,e,f
trace(someLetters); // b,c

 

 如果什么参数也没有传,那么就创建此数组的一个副本。

 

8.Array 与 String 相互转化

Array 转化为 String

function join(sep:*):String 将数组中的元素转换为字符串、在元素间插入指定的分隔符、连接这些元素然后返回结果字符串。嵌套数组总是以逗号 (,) 分隔,而不使用传递给 join() 方法的分隔符分隔。

 

var myArr:Array = new Array("one", "two", "three");
var myStr:String = myArr.join(" and ");
trace(myArr); // one,two,three
trace(myStr); // one and two and three

 

 String 转化为 Array

function split(delimiter:*, limit:Number = 0x7fffffff):Array 将 String 对象拆分为一个子字符串数组,方法是在所有出现指定 delimiter 参数的位置进行拆分。limit 为放入数组中的最大项数。默认为允许的最大值。

 

var str:String = "abc";
var resultArray:Array = str.split();
 

 

 

 

分享到:
评论

相关推荐

    flex array应用实例源码

    6. **性能考虑:** 在实现`flex array`时,需要考虑性能优化,例如,通过预留一些额外的空间来减少频繁的内存重分配,或者使用“惰性收缩”策略,只在真正需要时才缩小数组的大小。 通过对`AS_0600_Array`的源代码...

    FLEX百条有用知识

    根据给定的文件信息,我们可以提炼出一系列与FLEX编程相关的知识要点,这些知识点涵盖了从基本操作到进阶技巧的广泛范围,对于初学者和有经验的开发者来说都非常实用。 ### 改变输出SWF的属性 在进行FLEX开发时,...

    Flex4 中文API

    3. **ActionScript3 Classes**:AS3类库包含大量的内置类,如Date、Array、XML等,以及与Flex框架相关的类,如EventDispatcher、UIComponent、Application等。开发者可以通过这些类进行数据处理、事件监听、网络通信...

    flex json 解析包

    `JSON.parse()`方法是解析JSON字符串的关键,它接收一个JSON格式的字符串作为参数,返回一个ActionScript对象(可能是Array、Object或其他类型),可以直接在Flex应用中使用。例如: ```actionscript var json...

    flex 经典教程下载

    这些函数在创建动态效果和游戏逻辑中非常有用。 **定时器** 定时器(Timer)类是实现定时任务的关键。通过实例化Timer,设置间隔时间和重复次数,然后添加定时事件监听器,可以定期执行特定的代码。例如,创建一个...

    Flex里解析XML数据

    在Flex中,XML对象提供了一种灵活的方式来创建、操作和解析XML文档。通过实例化XML类,我们可以加载XML数据并对其进行解析: ```actionscript var xml:XML = new XML("&lt;root&gt;&lt;item&gt;Value&lt;/item&gt;&lt;/root&gt;"); ``` 3. ...

    vt.zip_flex

    4. **动态向量操作**:在ActionScript中,可以使用Array或Vector类来处理动态向量数据。Array是动态大小的,可以随时添加、删除或修改元素,而Vector提供类型安全和性能优化,特别适合处理大量数据。 5. **数据绑定...

    AS3和Flex一百条常用的知识

    无论 try 块是否抛出异常,finally 块中的代码都会被执行,这对于释放资源或执行清理操作非常有用。 #### 11. 参数传递 在函数定义中使用 “rest” 参数语法可以接收不定数量的参数。`arguments` 对象提供了对所有...

    flex-web工程载入tomcat下xml文件(含源码)

    描述:“flex-web工程载入tomcat下xml文件(含源码)网上这方面的资料很少,自己总结的,希望对大家有用”—— 提示我们这是一项不常见但实用的技术,资料相对匮乏,作者已进行总结并分享了相关代码。 现在,让我们...

    Flex完全自学手册

    在Flex 1.5及之前版本中,实现这一功能较为复杂,需要通过Flash Player API中的`FileReference`类来进行操作。而到了Flex 2.0,这个类被集成到了Flex类库中,使得上传下载功能变得更加简便易用。 #### 技术背景与...

    flex_教程.doc

    这对于动态生成列表或网格等元素非常有用,可以显著提高代码的复用性和灵活性。 通过以上介绍,我们可以看到Flex不仅提供了丰富的组件库和工具集,还支持现代Web开发中常见的技术标准,使得开发者能够在短时间内...

    Flex:ArrayCollection转xml形式的实例

    另一方面,如果从服务器接收XML数据,也可以通过反向操作将XML转换为ArrayCollection,以便在Flex或Flash应用中使用。 在实际项目中,你可能还需要考虑更多细节,如XML的命名空间管理、属性的添加以及错误处理等。...

    Flex完全自学手册24.pdf

    本文旨在详细介绍如何在Flex环境中利用`FileReference`类实现文件的上传与下载操作。 #### 二、技术背景 Flex是一种强大的Web开发框架,能够帮助开发者构建高性能的富互联网应用(RIA)。Flex自2004年发布以来经历了...

    Flex获得URL参数值.doc

    在Flex开发中,有时我们需要从外部HTML页面向SWF文件传递参数,以便在Flex应用程序中使用这些参数。...这在实现动态交互和数据传递时非常有用,特别是在需要根据URL参数来初始化Flex应用的状态或者执行特定操作时。

    Adobe flex3.pdf

    1. **数据类型**:ActionScript 3.0 支持多种数据类型,包括数字(Number)、字符串(String)、布尔值(Boolean)等基本类型,也支持复杂的对象(Object)、数组(Array)等高级类型。 2. **变量声明**:在ActionScript 3.0中...

    flex播放器,实现暂停,上一首下一首功能,代码傻瓜

    在Flex中,时间轴控制通常通过`Timeline`类实现,但`MediaPlayer`已经内置了这些功能,所以我们无需直接操作时间轴。进度条更新可以通过监听`MediaPlayer`的`playheadUpdate`事件来实现,更新进度条的值以反映当前的...

    flex面试题

    根据提供的信息,我们可以总结出以下Flex与ActionScript (AS) ...这些知识点不仅适用于新手,对于准备面试的人来说也非常有用。理解和掌握这些基础知识能够帮助开发者更好地使用 Flex 和 ActionScript 进行开发工作。

    Flex as3xlsUTF8导出Excel类库文档API

    在这种场景下,`as3xlsUTF8`是一个非常有用的类库,它允许我们在ActionScript 3(AS3)环境中创建和操作Excel文件。本文将详细介绍`as3xlsUTF8`类库以及其相关的API,帮助开发者理解如何使用这个库来实现Excel的导出...

    corelib.swc

    例如,Array类提供了丰富的操作方法,如push、pop、shift和unshift,使得数组的管理变得简单;Date类则允许开发者轻松地创建、操作和格式化日期对象。 其次,corelib.swc中还包含了一些核心的图形和显示对象,这是...

    as3xls类包

    这个库的主要优点在于,它能够将Excel表格的数据转换为AS3可以处理的数据结构,如Array或ArrayCollection,以便在Flex应用程序中进行进一步的处理和显示。 AS3XLS的核心类是`XLS`,它是用来加载和解析Excel文件的...

Global site tag (gtag.js) - Google Analytics