- 浏览: 131264 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
lliiqiang:
NetConnection.Connect.Rejected拒 ...
第一个FMS程序,连接到FMS服务器(Flash/Flex两种实现) 转
怎么判断两个数组是否相等呢
解决办法
循环数组,一一比较对应位置的每个元素
讨论
因为数组是引用类型,使用=操作符只能对比引用是否指向同一内存空间,如:
var letters:Array = ["a", "b", "c", "d"];
var lettersPointer:Array = letters;
trace(letters == lettersPointer); // 显示: true
var lettersPointer:Array = letters;
trace(letters == lettersPointer); // 显示: true
但是如果数组内容相同,但是在不同的内存空间,=操作就会返回false:
var letters1:Array = ["a", "b", "c", "d"];
var letters2:Array = ["a", "b", "c", "d"];
trace(letters1 == letters2]; // 显示: false
var letters2:Array = ["a", "b", "c", "d"];
trace(letters1 == letters2]; // 显示: false
因此,比较数组应该比较数组的每个元素是否相等:
var equivalent:Boolean = true;
for(var i:int = 0; i < letters1.length; i++) {
if(letters1[i] != letters2[i]) {
equivalent = false;
break;
}
}
trace(equivalent); // 显示: true
for(var i:int = 0; i < letters1.length; i++) {
if(letters1[i] != letters2[i]) {
equivalent = false;
break;
}
}
trace(equivalent); // 显示: true
另外还可以用ArrayUtilities.equals( ) 方法,该方法需要两个参数:两个数组引用,返回布尔值说明是否相等:
var letters1:Array = ["a", "b", "c", "d"];
var letters2:Array = ["a", "b", "c", "d"];
trace(ArrayUtilities.equals(letters1, letters2)); // 显示: true
var letters2:Array = ["a", "b", "c", "d"];
trace(ArrayUtilities.equals(letters1, letters2)); // 显示: true
默认,两个不同排列的数组是不相等的,除非提供第3个参数为true表示忽略数组排列顺序:
var letters1:Array = ["a", "b", "c", "d"];
var letters2:Array = ["b", "a", "d", "c"];
trace(ArrayUtilities.equals(letters1, letters2)); // 显示: false
trace(ArrayUtilities.equals(letters1, letters2, true)); // 显示: true
var letters2:Array = ["b", "a", "d", "c"];
trace(ArrayUtilities.equals(letters1, letters2)); // 显示: false
trace(ArrayUtilities.equals(letters1, letters2, true)); // 显示: true
equals( ) 方法用起来很简单,下面是它的代码:
public static function equals(arrayA:Array, arrayB:Array,
bNotOrdered:Boolean):Boolean {
// 如果两个数组长度不同
if(arrayA.length != arrayB.length) {
return false;
}
// 创建拷贝,不影响原数组
var arrayACopy:Array = arrayA.concat( );
var arrayBCopy:Array = arrayB.concat( );
// 如果忽略排列顺序
if(bNotOrdered) {
arrayACopy.sort( );
arrayBCopy.sort( );
}
// 循环比较,如果不匹配,删除拷贝,返回false
for(var i:int = 0; i < arrayACopy.length; i++) {
if(arrayACopy[i] != arrayBCopy[i]) {
delete arrayACopy;
delete arrayBCopy;
return false;
}
}
// 否则相等,删除数组,返回true
delete arrayACopy;
delete arrayBCopy;
return true;
}
bNotOrdered:Boolean):Boolean {
// 如果两个数组长度不同
if(arrayA.length != arrayB.length) {
return false;
}
// 创建拷贝,不影响原数组
var arrayACopy:Array = arrayA.concat( );
var arrayBCopy:Array = arrayB.concat( );
// 如果忽略排列顺序
if(bNotOrdered) {
arrayACopy.sort( );
arrayBCopy.sort( );
}
// 循环比较,如果不匹配,删除拷贝,返回false
for(var i:int = 0; i < arrayACopy.length; i++) {
if(arrayACopy[i] != arrayBCopy[i]) {
delete arrayACopy;
delete arrayBCopy;
return false;
}
}
// 否则相等,删除数组,返回true
delete arrayACopy;
delete arrayBCopy;
return true;
}
发表评论
-
Flex 对Java端返回Collection的处理方法
2010-07-20 22:21 1087将Flex与Spring集成后(BlazeDS 与Spring ... -
在文本框里添加超链接
2010-05-31 10:16 2218问题我想在文本框里加入超链接解决办法利用HTML <a ... -
BulkLoader类和PV3D
2010-05-31 10:06 919AS3取消了movieclip的loader类,所以加载图 ... -
Flex LinkButton仿IE超链接
2010-05-31 10:02 3002重写的LinkButton类Kelvin_LinkButt ... -
flex RSL做资源共享管理
2010-05-18 10:35 1086Flex SDK 里有一个运行时组件共享库——RSL ( Ru ... -
很不错的flex果冻特效 转
2010-05-13 10:36 1850index.mxml <?xml version ... -
Flex 特效一部分 转
2010-05-12 14:24 15001:glow(发光) 代码: <mx:Glow id ... -
Flex3特效的基本用法 原理 转
2010-05-12 11:40 1295Flex3为开发人员提供了多种基本的特效控件,每种特效控件对应 ... -
Flex3特效的基本用法 特效组件 转
2010-05-12 11:34 1345Flex3中预定义了多种特效组件,每种组件对应于一种或多种特效 ... -
FLEX3中应用CSS完全详解手册! 转
2010-05-11 16:44 875在FLEX中使用样式方法一、使用本地样式定义使用<mx: ... -
Flex加载图片的常用的几种方式 转
2010-05-11 15:17 793<?xml version="1.0&qu ... -
flex特效 触发器
2010-04-30 16:00 1184触发器在Flex3的特效实现中起着重要作用,对于Flex3中的 ... -
数据筛选(转)
2010-04-15 17:16 770<?xml version="1.0" ... -
在数组首部和尾部添加元素(转)
2010-04-15 17:01 3235要再添加新元素到数组解决办法push( ) 方法在数组尾部添加 ... -
遍历数组成员(转)
2010-04-15 17:00 877要访问数组的每个元素 ... -
搜索匹配的数组元素(转)
2010-04-15 16:58 1070要找出指定值得数组元 ... -
.删除数组元素(转)
2010-04-15 16:56 1441要删除一个或多个数组元素,或移动数组元素解决办法splice( ... -
在数组中间插入元素(转)
2010-04-15 16:53 2190要在数组中间插入元素解决办法使用splice( ) 方法讨论s ... -
读取关联数组(转)
2010-04-15 16:50 856怎样遍历关联数组解决办法使用for . . . in 语句讨论 ... -
创建关联数组(转)
2010-04-15 16:48 955要创建用名称元素作为索引的数组解决办法创建关联数组讨论用关联数 ...
相关推荐
byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了
针对这一需求,"数组转二进制小工具"应运而生,成为了程序员和数据工程师的一个贴心助手。 这个小工具的作用非常明确,就是将数组数据转换成二进制格式,输出为bin文件。bin文件是一种二进制文件格式,它以无格式的...
js数组转换成tree结构数组算法
"labview字符串数组转字符串"这个主题是关于如何将一个包含多个字符串的数组转换为单个连续的字符串。在这个过程中,我们需要理解LabVIEW的数据结构、字符串操作函数以及如何利用它们来实现这种转换。 首先,...
在IT领域,数组是一种基本的数据结构,用于存储和操作数据集合。数组通常包含相同类型的数据元素,例如整数、字符或浮点数。在某些情况下,我们可能需要将数组保存到磁盘上以便后续处理或传输。二进制文件(如.bin...
在编程领域,数组之间的转换是常见的操作,尤其是在处理不同类型数据时。本示例涉及的是整形数组(int array)与字符数组(uchar array)之间的转换,这对于数据存储和传输具有重要意义。在Qt或VC++环境中,这种转换...
一维数组转二维数组
在Java编程中,将二维数组转换为JSON格式的数据是常见的数据处理需求,特别是在处理Web服务或数据交换时。本文将详细讲解如何使用Java实现这一功能,以及涉及的相关操作技巧。 首先,我们需要理解二维数组和JSON的...
在编程领域,字符数组是存储单个字符的集合,而字符串则是由零或多个字符组成的序列,通常以空字符'\0'作为结束标志。字符数组转换成字符串是常见的操作,尤其在C语言及其衍生的编程语言中。这个过程涉及到字符数组...
### JSON转对象数组与对象数组转JSON(Java) 在Java编程语言中,处理JSON数据时经常需要进行JSON字符串与Java对象之间的转换。特别是在涉及到数组或集合的场景下,这种转换显得尤为重要。本文将详细介绍如何使用...
|PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * ...|老数组转字符串212863 | |新数组转字符串187 * |以上是200000个数组测试结果 | |优化效率相当明显
标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...
### C# 中维数组转换为 DataTable 的三种方法 在 C# 开发中,经常会遇到需要将数据从一种格式转换到另一种格式的需求,特别是在处理 Excel 数据时。本文将介绍如何使用 C# 将多维数组转换成 `DataTable`,这对于...
由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制
php把数组转换成XML格式
### Java对象数组转JSON 首先,我们来看如何将一个Java对象数组转换成JSON格式。这通常涉及到使用第三方库如`fastjson`、`Jackson`或`org.json`等。这里以`org.json`为例进行说明: ```java import org.json....
C#字节数组转16进制字符串 C#字节数组转16进制字符串 QQ:292258449
易语言数组转指针源码,数组转指针,子程序1,子程序2,子程序3,数组_整数转指针,数组_指针转整数,数组_文本转指针,数组_指针转文本,数组_字节集转指针,数组_指针转字节集,内存_申请,内存_释放,内存_取长度,内存_写入,...
实现CString和char数组的相互转换,实现CString和BYTE数组(16进制)的相互转换
C2B转换助手是ALIENTEK开发的一个C语言数组(仅支持十六进制数组)到BIN文件的转换工具,非常适合将一些大的数组转换为BIN文件,存放在SD卡或者片外FLASH中,从而大大降低对MCU的FLASH的占用。