天天看點

javascript類型判斷一、測試用例二、arraySimilar函數

題目:

請在index.html檔案中,編寫arraysSimilar函數,實作判斷傳入的兩個數組是否相似。具體需求:

1. 數組中的成員類型相同,順序可以不同。例如[1, true] 與 [false, 2]是相似的。

2. 數組的長度一緻。

3. 類型的判斷範圍,需要區分:String, Boolean, Number, undefined, null, 函數,日期, window.

當以上全部滿足,則傳回"判定結果:通過",否則傳回"判定結果:不通過"。

這個檔案為testData.js。主要任務是完成arraysSimilar函數。

1、判斷2個參數是否都是數組,不是就傳回false;

2、判斷2個數組長度是否一緻,不是直接傳回fasle;

3、建立2個臨時數組temp1,temp2并初始化為0,用來存放arr1和arr2中各種類型的個數。

var temp1 = [0, 0, 0, 0, 0, 0, 0, 0];

var temp2 = [0, 0, 0, 0, 0, 0, 0, 0];

4、周遊2個arr1和arr2,每周遊一個元素,将對應類型加1。

5、完成arr1和arr2的周遊後,通過temp1.toString()和temp2.toString()是否相等得出2個數組是否相似。

雖然代碼略粗糙,但是功能完成了。網上看了其他人的答案确實不同的人做法不一樣,有些值得借鑒的地方。

建一個類型對象數組obj,初始化為零,arr1周遊時每個元素對應的類型加一,arr2周遊時每個元素對應的類型減一,最終判斷obj裡所有鍵的值都為0即相似數組。

還有一個答案,差不多算标準答案,當然這種題也沒有标準答案。和上個答案的差别是,用map(在js中也就是對象)存放資料類型和次數,這個map初始化為{},在後面動态生成的。

還有一個比較簡潔也好了解的解法

還有一個精妙的解法,我對這種不感興趣,沒仔細看。

 本文轉自帥氣的頭頭部落格51CTO部落格,原文連結http://blog.51cto.com/12902932/1926157如需轉載請自行聯系原作者

sshpp

繼續閱讀