1. 程式人生 > >用js如何封裝一個可判斷兩陣列中元素型別是否相同的函式

用js如何封裝一個可判斷兩陣列中元素型別是否相同的函式

1.首先這個函式可以判斷出各種資料型別(包括基本型別和object型別),注意這裡的object型別需要細細的把它們區分出來,可以用typeof先判斷其是否是基本型別,如果不是基本型別,再用instanceof一一判斷,並將結果放入兩個新的result陣列中;

2.這個函式需要一一比對2個result中的答案是否相同,注意,這裡與順序是無關的,可以利用兩個巢狀的for迴圈進行遍歷對比。

以下是程式碼。

function arraysSimilar(arr1,arr2){
if(arr1.length!=arr2.length)return false;
     else{
var result1=[];
var result2=[];
var i=0;
for(i;i<arr1.length;i++){
if(typeof(arr1[i])!='object'){
result1[i]=typeof(arr1[i]);
}
else if(arr1[i]instanceof Array){
result1[i]='Array';
}
else if(arr1[i]instanceof Date){
result1[i]='Date';
}
else if(arr1[i]instanceof Window){
result1[i]='Window';
}
else if(!(arr1[i]instanceof Object)){
result1[i]='Null';
}
else{
result1[i]='Object';
}}

        var j=0;
        for(j;j<arr2.length;j++){
if(typeof(arr2[j])!='object'){
result2[j]=typeof(arr2[j]);
}
else if(arr2[j]instanceof Array){
result2[j]='Array';
}
else if(arr2[j]instanceof Date){
result2[j]='Date';
}
else if(arr2[j]instanceof Window){
result2[j]='Window';
}
else if(!(arr2[j]instanceof Object)){
result2[j]='Null';
}
else{
result2[j]='Object';
}}
        
        
for(i=0;i<result1.length;i++)
           for(j=0;j<result2.length;j++){
             if(result1[i]==result2[j]){
             result2[j]='';
             break;
             }
             if((j==result2.length-1)&&(result1[i]!=result2[j]))
              return false;
       }
        return true;
        
           
}}
         var result=arraysSimilar('abc','cba');
         console.log(result);