判断两个数组是否相似

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

/*
* param1 Array
* param2 Array
* return true or false
*/
function arraysSimilar(arr1, arr2){
if (arr1 instanceof Array && arr2 instanceof Array ) { //先判断传入的是否是数组
if (arr1.length == arr2.length) { //判断数组长度
console.log("same-length");
console.log(arr1);
console.log(arr2);
//开始判断数组内部是否相似
return sameLengthArraysSimilar(arr1, arr2);
} else{
//两个数组长度不同返回false
return console.log(false);
}
} else {
//传入的参数不是数组返回false
return false;
}
}

/**
* 判断两个等长的数组内部是否相似
* 遍历数组
* arr1中元素各种类型出现的个数是否和arr2中元素各种类型出现的个数相同
* @param {Array} arr1 数组1
* @param {Array} arr2 数组2
* @return {true,false}
*/

function sameLengthArraysSimilar(arr1,arr2) {
var numInArr1 = 0;
var numInArr2 = 0;
var booleanInArr1 = 0;
var booleanInArr2 = 0;
var funInArr1 = 0;
var funInArr2 = 0;
var undefinedInArr1 = 0;
var undefinedInArr2 = 0;
var stringInArr1 = 0;
var stringInArr2 = 0;
var nullInArr1 = 0;
var nullInArr2 = 0;
var dateInArr1 = 0;
var dateInArr2 = 0;
var windowInArr1 = 0;
var windowInArr2 = 0;
//数组 buer 函数 undef str null data window
for (var i = 0; i < arr1.length; i++) {
if(typeof arr1[i] === ‘number‘ ){
numInArr1 ++;
} else if(typeof arr1[i] === ‘boolean‘){
booleanInArr1 ++;
} else if(typeof arr1[i] === ‘function‘){
funInArr1 ++;
} else if(typeof arr1[i] === ‘undefined‘){
undefinedInArr1 ++;
} else if(typeof arr1[i] === ‘string‘){
stringInArr1 ++;
} else if(typeof arr1[i] ===‘object‘){
if(Object.prototype.toString.apply(arr1[i]) === ‘[object Null]‘){
nullInArr1 ++;
} else if(Object.prototype.toString.apply(arr1[i]) === ‘[object Date]‘){
dateInArr1 ++;
} else if(Object.prototype.toString.apply(arr1[i]) === ‘[object global]‘){
windowInArr1 ++;
}
}

if(typeof arr2[i] === ‘number‘){
numInArr2 ++;
} else if(typeof arr2[i] === ‘boolean‘){
booleanInArr2 ++;
} else if(typeof arr2[i] === ‘function‘){
funInArr2 ++;
} else if(typeof arr2[i] === ‘undefined‘){
undefinedInArr2 ++;
} else if(typeof arr2[i] === ‘string‘){
stringInArr2 ++;
} else if(typeof arr2[i] ===‘object‘){
if(Object.prototype.toString.apply(arr2[i]) === ‘[object Null]‘){
nullInArr2 ++;
} else if(Object.prototype.toString.apply(arr2[i]) === ‘[object Date]‘){
dateInArr2 ++;
} else if(Object.prototype.toString.apply(arr2[i]) === ‘[object global]‘){
windowInArr2 ++;
}
}
}
if(numInArr1 == numInArr2 && booleanInArr1==booleanInArr2 && funInArr1==funInArr2 && undefinedInArr1==undefinedInArr2 && stringInArr1==stringInArr2 && nullInArr1==nullInArr2 && dateInArr1==dateInArr2 && windowInArr1==windowInArr2){
console.log(‘================================true‘);
return true;
}else{
console.log(‘================================false‘);
return false;
}
}

时间: 2024-10-11 23:11:48

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

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 "这两个数组不相等"; }

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

两个数组判断是否有重复项 $.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

判断两个数组是否相等

数组属于引用数据类型,其值存储在堆中,因此我们无法简单的用[]==[]对其进行判断,但可以使用类似于深拷贝的方法将其像剥洋葱一样拨开,逐个判断 下面是本人自己写的一套算法: function arrayEqual(arr1, arr2){ if(arr1.length==0&&arr2.length==0){return true} function ifEqual(obj1, obj2){ if(getType(obj1)!= getType(obj2)){ return false }

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

#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