`

比较数组(转)

    博客分类:
  • flex
阅读更多

怎么判断两个数组是否相等呢
解决办法
循环数组,一一比较对应位置的每个元素
讨论
因为数组是引用类型,使用=操作符只能对比引用是否指向同一内存空间,如:

var letters:Array = ["a""b""c""d"];
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 equivalent:Boolean = 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


默认,两个不同排列的数组是不相等的,除非提供第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


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;
}
分享到:
评论

相关推荐

    byte数组转换工具类 byte数组转int,byte数组转short,short转byte数组

    byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了

    数组转二进制小工具,应用于数组转bin文件

    针对这一需求,"数组转二进制小工具"应运而生,成为了程序员和数据工程师的一个贴心助手。 这个小工具的作用非常明确,就是将数组数据转换成二进制格式,输出为bin文件。bin文件是一种二进制文件格式,它以无格式的...

    js数组转换成tree结构数组

    js数组转换成tree结构数组算法

    labview字符串数组转字符串

    "labview字符串数组转字符串"这个主题是关于如何将一个包含多个字符串的数组转换为单个连续的字符串。在这个过程中,我们需要理解LabVIEW的数据结构、字符串操作函数以及如何利用它们来实现这种转换。 首先,...

    将数组转换为.bin文件

    在IT领域,数组是一种基本的数据结构,用于存储和操作数据集合。数组通常包含相同类型的数据元素,例如整数、字符或浮点数。在某些情况下,我们可能需要将数组保存到磁盘上以便后续处理或传输。二进制文件(如.bin...

    整形数组与字符数组相互转换

    在编程领域,数组之间的转换是常见的操作,尤其是在处理不同类型数据时。本示例涉及的是整形数组(int array)与字符数组(uchar array)之间的转换,这对于数据存储和传输具有重要意义。在Qt或VC++环境中,这种转换...

    labview一维数组转二维数组

    一维数组转二维数组

    java实现二维数组转json的方法示例

    在Java编程中,将二维数组转换为JSON格式的数据是常见的数据处理需求,特别是在处理Web服务或数据交换时。本文将详细讲解如何使用Java实现这一功能,以及涉及的相关操作技巧。 首先,我们需要理解二维数组和JSON的...

    字符数组转换成字符串

    在编程领域,字符数组是存储单个字符的集合,而字符串则是由零或多个字符组成的序列,通常以空字符'\0'作为结束标志。字符数组转换成字符串是常见的操作,尤其在C语言及其衍生的编程语言中。这个过程涉及到字符数组...

    json转对象数组与对象数组转json --Java

    ### JSON转对象数组与对象数组转JSON(Java) 在Java编程语言中,处理JSON数据时经常需要进行JSON字符串与Java对象之间的转换。特别是在涉及到数组或集合的场景下,这种转换显得尤为重要。本文将详细介绍如何使用...

    PB POWERBUILDER 字符串 数组 相互 转换 转化

    |PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * ...|老数组转字符串212863 | |新数组转字符串187 * |以上是200000个数组测试结果 | |优化效率相当明显

    C# Byte数组转Int32 Short Float(浮点数)

    标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...

    C# 维数组转换为DataTable 的三个方法

    ### C# 中维数组转换为 DataTable 的三种方法 在 C# 开发中,经常会遇到需要将数据从一种格式转换到另一种格式的需求,特别是在处理 Excel 数据时。本文将介绍如何使用 C# 将多维数组转换成 `DataTable`,这对于...

    PHP CRC8算法-集成十六进制转byte数组与byte数组转十六进制

    由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制

    数组转换成XML

    php把数组转换成XML格式

    java-对象数组转换为json

    ### Java对象数组转JSON 首先,我们来看如何将一个Java对象数组转换成JSON格式。这通常涉及到使用第三方库如`fastjson`、`Jackson`或`org.json`等。这里以`org.json`为例进行说明: ```java import org.json....

    C#字节数组转16进制字符串

    C#字节数组转16进制字符串 C#字节数组转16进制字符串 QQ:292258449

    易语言数组转指针

    易语言数组转指针源码,数组转指针,子程序1,子程序2,子程序3,数组_整数转指针,数组_指针转整数,数组_文本转指针,数组_指针转文本,数组_字节集转指针,数组_指针转字节集,内存_申请,内存_释放,内存_取长度,内存_写入,...

    CString与char数组和BYTE数组转换

    实现CString和char数组的相互转换,实现CString和BYTE数组(16进制)的相互转换

    16进制c数组转成bin文件

    C2B转换助手是ALIENTEK开发的一个C语言数组(仅支持十六进制数组)到BIN文件的转换工具,非常适合将一些大的数组转换为BIN文件,存放在SD卡或者片外FLASH中,从而大大降低对MCU的FLASH的占用。

Global site tag (gtag.js) - Google Analytics