從網(wǎng)上總結(jié)的多種方法辫愉,有很多種窍仰,在這里記錄一下初始的跟相對(duì)推薦的方法短条。
方法一
定義一個(gè)新數(shù)組导匣,并存放原數(shù)組的第一個(gè)元素,然后將元素組一一和新數(shù)組的元素對(duì)比茸时,若不同則存放在新數(shù)組中贡定。當(dāng)然這個(gè)是最笨的,不建議使用可都。
function unique(arr) {
let newArr = [arr[0]];
for (let i = 1; i < arr.length; i++) {
let repeat = false;
for (let j = 0; j < newArr.length; j++) {
if (arr[i] === newArr[j]) {
repeat = true;
break;
}else{
}
}
if (!repeat) {
newArr.push(arr[i]);
}
}
return newArr;
}
方法二
先將原數(shù)組排序缓待,在與相鄰的進(jìn)行比較,如果不同則存入新數(shù)組渠牲。
function unique2(arr) {
var formArr = arr.sort()
var newArr=[formArr[0]]
for (let i = 1; i < formArr.length; i++) {
if (formArr[i]!==formArr[i-1]) {
newArr.push(formArr[i])
}
}
return newArr
}
方法三
利用對(duì)象屬性存在的特性命斧,如果沒有該屬性則存入新數(shù)組。
function unique3(arr) {
var obj={}
var newArr=[]
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1
newArr.push(arr[i])
}
}
return newArr
}
方法四
利用數(shù)組的indexOf下標(biāo)屬性來查詢嘱兼。
function unique4(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i])===-1) {
newArr.push(arr[i])
}
}
return newArr
}
方法五
利用數(shù)組原型對(duì)象上的includes方法国葬。
function unique5(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
}
return newArr
}
方法六
利用 ES6的set 方法。
function unique6(arr) {
//Set數(shù)據(jù)結(jié)構(gòu)芹壕,它類似于數(shù)組汇四,其成員的值都是唯一的
return Array.from(new Set(arr)); // 利用Array.from將Set結(jié)構(gòu)轉(zhuǎn)換成數(shù)組
}