定义一个新数组,判断旧数组中的元素是否在新数组中已存在
function unique(array){
var n = [];
for(var i = 0;i < array.length; i++){
if(n.indexOf(array[i]) == -1)
n.push(array[i]);
}
return n;
}
对数组进行排序后,比较前后两个相邻元素
function unique(){
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
var sortedArr = arr.sort(function(a,b){return a-b});
var results = [];
for (var i = 0; i < arr.length; i++) {
if (sortedArr[i + 1] !== sortedArr[i]) {
results.push(sortedArr[i]);
}
}
return results;
}
根据对象的属性不重复
Array.prototype.unique = function() {
var res = []
var json = {}
for (var i = 0; i < this.length; i++) {
if(!json[this[i]]){ // 利用对象属性不重复
res.push(this[i])
json[this[i]] = 1 // 传值随意
}
}
return res
}
var arr = [2,4,66,55,33,55,3,4,4,32,2]
console.log(arr.unique())
利用对象字面量的key与value关联性
function distinct(arr) {
var obj = {},
i = 0,
len = 0;
if (Array.isArray(arr) && arr.length > 0) {
for (i = 0; i < arr.length; i += 1) {
obj[arr[i]] = arr[i];
}
return Object.keys(obj); //返回对象的可枚举属性和方法的名称
}
}
var arr = [9, 9, 111, 2, 3, 4, 4, 5, 7];
console.log(distinct(arr));
ES6新特性
Array.from(new set(array));
参考:https://segmentfault.com/q/1010000000262609