1、利用indexOf
普通函數方式:數組
function unique(arr){ var newArr=[]; for(var i=0;i<arr.length;i++){ if(newArr.indexOf(arr[i])===-1){ newArr.push(arr[i]); } } return newArr } var array=[1,1,2,3,4,4,5,5,6]; unique(array);// [1, 2, 3, 4, 5, 6]
原型方法:函數
Array.prototype.unique=function(){ var newArr=[this[0]]; for(var i=0;i<this.length;i++){ if(this.indexOf(this[i])===i){ newArr.push(this[i]); } } return newArr }; var array=[1,1,2,3,4,4,5,5,6]; array.unique();
2、利用Array.filterthis
var oldArr=[1,1,2,3,4,4,5,5,6]; var newArr=oldArr.filter(function(currentValue,index,arr){ if(arr.indexOf(currentValue)===index){ return true }else{ return false } }); console.log(newArr);
3、ES6中方法
一、使用Set函數與擴展運算符(利用的是Set函數數值惟一性的特色)prototype
[...new Set([1,1,2,3,4,5])]
二、Array.from()【利用的是Set函數數值惟一性的特色及from()函數能夠將其轉換爲數組的原理】code
Array.from(new Set([1,1,2,2,3,4,5,5]));