轉自https://juejin.im/post/5aaf7666f265da23923625c5es6
遍歷數組,創建新數組,利用indexOf判斷是否存在於新數組中,不存在則push到新數組,最後返回新數組json
function delre(ar) {
var ret = [];
for (var i = 0, j = ar.length; i < j; i++) {
if (ret.indexOf(ar[i]) === -1) {
ret.push(ar[i]);
}
}
return ret;
}
複製代碼
遍歷數組,利用object對象保存數組值,判斷數組值是否已經保存在object中,未保存則push到新數組並用object[arrayItem]=1的方式記錄保存數組
function delre(ar) {
var tmp = {},
ret = [];
for (var i = 0, j = ar.length; i < j; i++) {
if (!tmp[ar[i]]) {
tmp[ar[i]] = 1;
ret.push(ar[i]);
}
}
return ret;
}
複製代碼
或者bash
Array.prototype.unique = function(){
var json = {}, newArr = [], len = this.length;
for(var i = 0; i < len; i++){
var temp = Object.prototype.toString.call(this[i]);
if(typeof json[this[i]] == "undefined"){
json[this[i]] = {};
json[this[i]][temp] = 1;
newArr.push(this[i]);
}else if(typeof json[this[i]][temp] == "undefined"){
json[this[i]][temp] = 1;
newArr.push(this[i]);
}else{
json[this[i]][temp]++;
}
}
console.log(json);
return newArr;
}
複製代碼
function unique(arr) {
var temp = {}
arr.forEach(item => {
temp[JSON.stringfy(item)] = item
})
return Object.keys(temp).map(item => {
return JSON.parse(item)
})
}
複製代碼
由於數組元素多是不一樣類型的post
數組下標判斷法, 遍歷數組,利用indexOf判斷元素的值是否與當前索引相等,如相等則加入ui
function delre(ar) {
var ret = [];
ar.forEach(function(e, i, ar) {
if (ar.indexOf(e) === i) {
ret.push(e);
}
});
return ret;
}
複製代碼
數組先排序, 而後比較倆數組一頭一尾進行去重this
function delre(ar) {
var ret = [], end;
ar.sort();
end = ar[0];
ret.push(ar[0]);
for (var i = 1; i < ar.length; i++) {
if (ar[i] != end) {
ret.push(ar[i]);
end = ar[i];
}
}
return ret;
}
複製代碼
循環二次數組中的值,依次進行比較spa
function delre(ar) {
for (var i = 0; i < ar.length; i++) {
for (var j = i + 1; j < ar.length; j++) {
if (ar[j] == ar[i]) {
ar.splice(j, 1)
j--
}
}
}
return ar
}
複製代碼
es6 set [...new Set(['1',2,3,4,1,2,12,2])]
orprototype
Array.prototype.unique = function () {
const set = new Set(this);
return Array.from(set);
}
複製代碼
es6 includescode
Array.prototype.unique = function () {
const newArray = [];
this.forEach(item => {
if (!newArray.includes(item)) {
newArray.push(item);
}
});
return newArray;
}
複製代碼
es6 map
Array.prototype.unique = function () {
const newArray = [];
const tmp = new Map();
for(let i = 0; i < this.length; i++){
if(!tmp.get(this[i])){
tmp.set(this[i], 1);
newArray.push(this[i]);
}
}
return newArray;
}
複製代碼