????<script?type="text/javascript">???????????
????/*?????????
????*?param1?Array??????????
????*?param2?Array?????????
????*?return?true?or?false?????????
????*?數(shù)組中的成員類型相同,順序可以不同。例如[1,?true]?與?[false,?2]是相似的。這里可以運用sort()進行排序
????*?數(shù)組的長度一致,這里只要arr1.length=arr2.length?????????
????*?類型的判斷范圍,需要區(qū)分:String,?Boolean,?Number,?undefined,?null,?函數(shù),日期,?window.?????????
????*?這里意在針對每一個值都要精確到以上分類?????????
????*/
????function?arraysSimilar(arr1,?arr2)?
????{
??????answer?=?true;????
??????//先判斷是否是數(shù)組,因為大數(shù)組的最后三個并不是數(shù)組,而是單獨的元素
??????if?(arr1?instanceof?Array?===?true?&&?arr2?instanceof?Array?===?true)?
??????{
???????if?(arr1.length?==?arr2.length)?//先確定數(shù)組長度一致
?????????{?
?????????var?arrType1?=?[],arrType2?=?[];
?????????for?(var?i?=?0,?len?=?arr1.length;?i?<?len;?++i)?
?????????{
???????????arrType1[i]?=?Object.prototype.toString.apply(arr1[i]);
???????????arrType2[i]?=?Object.prototype.toString.apply(arr2[i]);
?????????}?
?????????arrType1.sort(),?arrType2.sort();?//對數(shù)組進行無差別排序
?????????if?(arrType1.toString()?!=?arrType2.toString())?
?????????{??
????????????answer?=?false;
??????????}}?
??????????else?{answer?=?false}
?????????}?
?????else?
?????{answer?=?false;?//因為看了js里面后三個都是false所以偷了個懶}
???????return?answer;
????}????
?</script>
2019-11-02
最后雖然通過了,但是我有兩個問題想請教大家;
對于最后三個數(shù)據(jù)的判斷應該如何書寫?觀察了Typeof、instanceof和Object.prototype.toString:發(fā)現(xiàn)都沒有很適合,還是說可以這么來,先判斷類型是否一致,再判斷值是否一致,因為最后一個數(shù)組是字符串;
arrType2.toString()這個用法我在百度上查了是不好的用法,有更好的推薦嘛?for循環(huán)有點麻煩。對于為什么要對得到類型后的組合進行排序,是因為值就那么多,且在長度相同的情況下,肯定會對應的上的。但這里也存在不嚴謹,如果真的要十分嚴謹?shù)脑挄浅碗sTT