以前的es6 教程中有說過一句代碼實現數組去重的方法(http://www.cnblogs.com/lafitewu/p/8480055.html)html
今天還給你們帶來一個新的去重方法:Setes6
const arr = [1,0,2,0,5,4,4,5,0,1]面試
let newArr = [...new Set([1,0,2,0,5,4,4,5,0,1])]數組
console.log(newArr) // [1,0,2,5,4]es5
感受這種方法更爲簡潔。htm
說到這裏,此處也碰到一個奇怪的問題。對象
console.log(typeof(newArr)) // objectblog
what? ? ? 這是什麼個狀況?它不是應該打印出array麼?教程
懵逼中... 10分鐘過去後,獨自折騰,終於get
要想判斷一個類型是否是數組類型,能夠用 console.log(Array.isArray(arr)) // true
這時忽然想起,之前面試時,總有面試官會問,你如何判斷一個變量類型是數組仍是對象啊? 我毫無防備的說 typeof ,嗯仍是本身太年輕。
typeof 也能夠,可是得這樣玩 console.log(typeof(arr.length)) // number ,之因此能夠這樣判斷,是由於對象是沒有 length 這個屬性的, 你get了嗎?
最後new Set() 出來的是一個object 類型,這時候能夠用 ... 或者 Array.from(newArr) 來轉化成數組類型。 ps: 這是es6 對象轉數組
es5: [].slice.call(newArr2)