- 浏览: 128222 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1044将Flex与Spring集成后(BlazeDS 与Spring ... -
在文本框里添加超链接
2010-05-31 10:16 2162问题我想在文本框里加入超链接解决办法利用HTML <a ... -
BulkLoader类和PV3D
2010-05-31 10:06 884AS3取消了movieclip的loader类,所以加载图 ... -
Flex LinkButton仿IE超链接
2010-05-31 10:02 2967重写的LinkButton类Kelvin_LinkButt ... -
flex RSL做资源共享管理
2010-05-18 10:35 1045Flex SDK 里有一个运行时组件共享库——RSL ( Ru ... -
很不错的flex果冻特效 转
2010-05-13 10:36 1796index.mxml <?xml version ... -
Flex 特效一部分 转
2010-05-12 14:24 14571:glow(发光) 代码: <mx:Glow id ... -
Flex3特效的基本用法 原理 转
2010-05-12 11:40 1259Flex3为开发人员提供了多种基本的特效控件,每种特效控件对应 ... -
Flex3特效的基本用法 特效组件 转
2010-05-12 11:34 1305Flex3中预定义了多种特效组件,每种组件对应于一种或多种特效 ... -
FLEX3中应用CSS完全详解手册! 转
2010-05-11 16:44 847在FLEX中使用样式方法一、使用本地样式定义使用<mx: ... -
Flex加载图片的常用的几种方式 转
2010-05-11 15:17 761<?xml version="1.0&qu ... -
flex特效 触发器
2010-04-30 16:00 1153触发器在Flex3的特效实现中起着重要作用,对于Flex3中的 ... -
数据筛选(转)
2010-04-15 17:16 691<?xml version="1.0" ... -
在数组首部和尾部添加元素(转)
2010-04-15 17:01 3185要再添加新元素到数组解决办法push( ) 方法在数组尾部添加 ... -
遍历数组成员(转)
2010-04-15 17:00 846要访问数组的每个元素 ... -
搜索匹配的数组元素(转)
2010-04-15 16:58 1036要找出指定值得数组元 ... -
.删除数组元素(转)
2010-04-15 16:56 1408要删除一个或多个数组元素,或移动数组元素解决办法splice( ... -
在数组中间插入元素(转)
2010-04-15 16:53 2130要在数组中间插入元素解决办法使用splice( ) 方法讨论s ... -
读取关联数组(转)
2010-04-15 16:50 819怎样遍历关联数组解决办法使用for . . . in 语句讨论 ... -
创建关联数组(转)
2010-04-15 16:48 920要创建用名称元素作为索引的数组解决办法创建关联数组讨论用关联数 ...
相关推荐
byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了
数组转二进制小工具数组转二进制小工具数组转二进制小工具数组转二进制小工具数组转二进制小工具数组转二进制小工具数组转二进制小工具
js数组转换成tree结构数组算法
音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组
|PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * ...|老数组转字符串212863 | |新数组转字符串187 * |以上是200000个数组测试结果 | |优化效率相当明显
一维数组转二维数组
php把数组转换成XML格式
C#中将byte数组转换为8bit灰度图像
主要介绍了java实现二维数组转json的方法,涉及java数组遍历及json格式数据构造相关操作技巧,需要的朋友可以参考下
实现CString和char数组的相互转换,实现CString和BYTE数组(16进制)的相互转换
C#字节数组转16进制字符串 C#字节数组转16进制字符串 QQ:292258449
易语言数组转指针源码,数组转指针,子程序1,子程序2,子程序3,数组_整数转指针,数组_指针转整数,数组_文本转指针,数组_指针转文本,数组_字节集转指针,数组_指针转字节集,内存_申请,内存_释放,内存_取长度,内存_写入,...
java-对象数组转换为json,自己的记录,能帮到人更好
C# string byte数组转换之string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); 反过来,byte[]转成string: string str = System.Text.Encoding.Default.GetString ( ...
注意:源程序是为qt写的,不过基本上都用的是c语言,下载之后稍作修改就可以在vc++上运行。将int数组转成uchar数组保存到数据库,然后再取出来将uchar数组还原成int数组。
C# 维数组转换为DataTable 的三个方法 来了解用C# 操作excel数据转变到dataset 进而到datatable的方式
将数组转换成JSON对象,代码非常详细,可以下载看看
java 数组转list list转数组 list数组互转 java8 代码示例
将字符型数组内容转换成字符串,也就是将数组中的几个字符成员变成一个字符串
嵌入式C语言浮点数到字符数组转换.pdf