javascript检测两个数组是否相似
JS要比较两个数组是否有相同的元素,即两个数组所有元素都相同,但元素的顺序不一定一致。只就需要先将数组进行排序,再比较两个数组是否相等。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>js检测两个数组是否相似</title>
</head>
<body>
<script>
//数组中的成员类型相同,顺序可以不同。例如[1,true]与[false,2]是相似的。
//数组的长度一致。
//类型的判断范围,需要区分:String,Boolean,Number,undefined,null,函数,日期,window.
functionarraysSimilar(arr1,arr2){
//判断边界
if(!(arr1instanceofArray)||!(arr2instanceofArray)){
returnfalse;
}
//判断长度
if(arr1.length!=arr2.length)returnfalse;
vari=0,n=arr1.length,countMap1={},countMap2={},t1,t2,TYPES=['string','boolean','number','undefined',null,'function','date','window'];
for(;i<n;i++){
t1=typeOf(arr1[i]);
t2=typeOf(arr2[i]);
if(countMap1[t1]){
countMap1[t1]++;
}else{
countMap1[t1]=1;
}
if(countMap2[t2]){
countMap2[t2]++;
}else{
countMap2[t2]=1;
}
}
functiontypeOf(ele){
varr;
if(ele===null)r='null';
elseif(eleinstanceofArray)r='array';
elseif(ele===window)r='window';
elseif(eleinstanceofDate)r='date';
elser=typeofele;
returnr;
}
for(i=0;i<TYPES.length;i++){
if(countMap1[TYPES[i]]!=countMap2[TYPES[i]])returnfalse;
}
returntrue;
}
document.write(arraysSimilar([1,true],[false,2]));
</script>
</body>
</html>
以上所述就是本文的全部内容了,希望大家能够喜欢。
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练