好吧,我現在終于明白了,原來countMap1 = {},這玩意不是數組啊,我當成java語法了,原來這是js里的對象啊,哈哈哈。明白了,把數據類型當作key,把出現次數當作value,然后對比每一種數據類型是否存在以及出現次數是否相同。好吧,確實很清奇。比我的方法要炫酷,哈哈。
我再換一種說法吧,前半部分我跟老師是一樣的,后面的處理不同,我是排序再判斷,老師是不排序,但是通過同步檢查來達到目的,非常清奇的思路。意思就是,你有5個蘋果1個梨,我有3個蘋果2個梨?,F在老師說,拿出蘋果,然后我拿出1個,你拿出1個,然后老是說拿出梨,我拿出1個,你拿出1個,老師再說拿出梨,我能拿,但是你拿不出來,這就表示我們手所持的水果是不同的了。
第三種方法就是記錄法的變種,也是老師的解法,我的思路是對記錄下來的string數組進行排序,這樣兩個數組的類型一一對應起來,然后判斷起來就方便了。老師的解法是不進行排序,而是通過排除法,比如a記錄的是string number boolean,b數組記錄的是boolean number string。在不排序的情況下如何對比呢?那就先判斷a數組中有沒有string,如果有再判斷b數組有沒有,如果b數組也有。就進行下一步。以此類推
其實解決這題有很多種思路,有一共通點,就是每個元素你都得判斷,既然你都要判斷,那么判斷的形式就會出現不同了,所以接下來就是不同點,第一種就是排除法,拿著a數組的元素去b數組找,找到了就刪掉,但我覺得這種方法有點笨。第二種就是記錄法,既然都遍歷了所有元素,那么把它們記錄下來,然后對照一下就知道了。還有第三種嗎?歡迎留言。
順便說一下我的解題思路吧,開始想的很簡單,先對兩個數組排序,然后循環對比類型,這種思路流產了,因為boolean會解釋為0和1,這會跟number類型混在一起,導致排序之后的數據類型并不能一一對應起來。第二種思路就很簡單了,遍歷兩個數組的所有元素并判斷所有類型,然后所有的類型以string字符串的形式添加到一個新的數組,然后這個數組里就是源數組的所有數據類型的信息,然后對這個string類型的數據進行排序,就不會出現第一種思路中出現的問題了,最后直接對比兩個數組就好了,因為它們都是string類型。
作為一個有Java基礎的,表示看起來很輕松,老師講的很好,就是最后的作業真的太BT了,判斷window對象是一個坑,判斷兩個null又是一個坑,不過說實話,題目設計的非常嚴謹,在一個坑一個坑的解決過后,代碼也變得強壯起來,而且順便鞏固了很多東西,我覺得出這道題的人已經有深厚的功力了,雖然我一邊做一邊罵你是個BT,但是真的很感謝老師。
最新回答 / 慕移動9181930
不對也網上貼?如果沒用jquery就把<script>的內容寫在結尾的</body>之前,以確保執行腳本時dom元素全部加載完畢。否則,就會提示找不到元素哦
2018-12-20
教程過時了。js已有塊級作用域。如今{a:1,b:2}并不會報錯?,F在已支持ES6新特性。
2018-12-17