判断两个数组是否相等

数组属于引用数据类型,其值存储在堆中,因此我们无法简单的用[]==[]对其进行判断,但可以使用类似于深拷贝的方法将其像剥洋葱一样拨开,逐个判断

下面是本人自己写的一套算法:

function arrayEqual(arr1, arr2){
    if(arr1.length==0&&arr2.length==0){return true}

    function ifEqual(obj1, obj2){
        if(getType(obj1)!= getType(obj2)){
            return false
        }
        var preType= getType(obj1)
        if(preType== ‘array‘){
            if(obj1.length!= obj2.length){
                return false
            }
            var l= obj1.length
            for(var i= 0; i< l; i ++){
                if(ifEqual(obj1[i], obj2[i])==false){
                    return false
                }
            }
        }
        else if(preType== ‘object‘){
            if(getObjLen(obj1)!= getObjLen(obj2)){
                return false
            }
            for(var i in obj1){
                if(ifEqual(obj1[i], obj2[i])==false){
                    return false
                }
            }
        }else {
            if(obj1!= obj2){
                return false
            }
        }
    }

    function getType(obj){
        return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()
    }

    function getObjLen(obj){
        var l= 0
        for(var i in obj){
            ++l
        }
        return l
    }

    return ifEqual(arr1, arr2)==false?false:true
}

var a=arrayEqual([1,{a:1}, [1,2,3,{a:1}]],[1,{a:1}, [1,2,3,{a:1}]])
console.log(a)
时间: 2024-08-29 01:32:26

判断两个数组是否相等的相关文章

C#如何判断两个数组相等

/// <summary> /// 数组比较是否相等 /// </summary> /// <param name="bt1">数组1</param> /// <param name="bt2">数组2</param> /// <returns>true:相等,false:不相等</returns> public bool CompareArray(byte[] bt1,

用指针判断两个数组是否有相同的数字

/* *Copyright(c) 2014 烟台大学计算机学院 *All rights reserved. * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:杨汉宁 * 完成日期:2014年 12 月 11 日 * 版 本 号:v1.0 * * 问题描述:用指针判断两个数组是否有相同的数字 * 输入描述:无 * 程序输出:YES OR NO */ #include<iostream> usi

php 判断两个数组是否相等

如何判断两个数组相等呢?其实很简单,用 == 或者 === 就可以了 那像 array('k'=>array())这样的多维数组能用如上方法判断相等吗?当然也可以. 若数组是数字索引的,就要注意一下了,见代码: 1 <?php 2 $a = array("apple", "banana"); 3 $b = array(1 => "banana", "0" => "apple"); 4

如何判断两个数组是否相等?

有两个数组,在不能使用sort()之类内置函数的前提下,怎么判断这两个数组是否相等? $a = array('a','b','c'); $b = array('c','a','b'); $c = array_diff($a,$b); //若返回数组为空,则说明2个数组相同 if (!$c) { echo "这两个数组相等"; }else{ echo "这两个数组不相等"; }

判断两个数组是否相似

/** * ===================================================== * 请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似.具体需求: * 1. 数组中的成员类型相同,顺序可以不同.例如[1, true] 与 [false, 2]是相似的. * 2. 数组的长度一致. * 3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期

判断两个数组中是否有重复项

两个数组判断是否有重复项 $.each(arr1,function(i,value){ val = value; num1 = i;//用来标记当前arr1数组中的重复项 $.each(arr2,function(i,value){ if(val == value){ alert(value); } }); });

判断两个数组内容是否相同

private static boolean isMatched(int[] a,int[] b){ if(a==b){ return true; } if (a==null || b==null){ return false; } if(a.length!=b.length){ return false; } //内部循环的起点 int nextIndex= 0; for(int i=0;i<a.length;i++){ boolean next= false; for(int j=nextI

判断两个数组是不是有相同元素

#include "stdio.h" int main() {  int arr1[]={1,2,3,4,5};  int arr2[]={2,3,4,5,6};  int i=0;  int j=0;  for(i=0;i<sizeof(arr1)/sizeof(arr1[0]);i++)  {  for(j=0;j<sizeof(arr2)/sizeof(arr2[0]);j++)  {  if(arr1[i]=arr2[j])  {  printf("存在相

c语言:判断两个数组是否有相同的元素

#include<stdio.h> int main() { int i = 0; int j = 0; int arr1[] = {1,2,3,4,5}; int arr2[] = {1,2,7,4,9}; for (i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++) { for (j = 0; j < sizeof(arr2) / sizeof(arr2[0]); j++) { if (arr1[i] == arr2[j]) { pr