方法一:
function unique11(arr){
arr.sort(function(a,b){return a-b;});
var result=[];
for(var i=0;i<arr.length;i++){
if(arr[i+1]!==arr[i]){
result.push(arr[i]);;
}
}
return result;
}
console.log(unique11([1,2,2,2,12,3,4,5]));
function unique12(arr){
return arr.concat().sort().filter(function(value, index, array) {
return !index || value != array[index - 1];
});
}
console.log(unique12([1,2,2,2,12,3,4,5]));
方法二:
function unique21(arr){//更快一点
var result=[];
for(var i=0;i<arr.length;i++){
if(result.indexOf(arr[i])===-1){
result.push(arr[i]);
}
}
return result;
}
console.log(unique21([1,2,2,2,12,3,4,5]));
function unique22(arr){//更快一点
var result=[];
for(var i=0;i<arr.length;i++){
(result.indexOf(arr[i])===-1)&&result.push(arr[i]);
}
return result;
}
console.log(unique22([1,2,2,2,12,3,4,5]));
方法三:
function unique31(arr){
var obj={},result=[];
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){
result.push(arr[i]);
obj[arr[i]]=true;
}
}
return result;
}
console.log(unique31([1,2,2,2,12,3,4,5]));
function unique32(arr){
var obj={};
return arr.filter(function(key) {
return obj.hasOwnProperty(key) ? false : (obj[key] = true);
});
}
console.log(unique32([1,2,2,2,12,3,4,5]));
方法四:
function unique41(arr){
var result=[];
for(var i=0;i<arr.length;i++){
if(arr.indexOf(arr[i])===i){
result.push(arr[i]);
}
}
return result;
}
console.log(unique41([1,2,2,2,12,3,4,5]));
function unique42(arr){
var result=[];
result=arr.filter(function(value,index,array){
return array.indexOf(value)===index;
})
return result;
}
console.log(unique42([1,2,2,2,12,3,4,5]));
方法五:
function unique5(arr){//优化的遍历数组,推荐的方法,获取没重复的最右一值放入新数组。
var result = [];
var len = arr.length;
for(var i = 0; i < len; i++) {
for(var j = i + 1; j < len; j++){
if (arr[i] === arr[j]){
j=++i;//i=i+1;j=i; 找到最近的那个后面再没有相同的值的元素插进去
}
}
result.push(arr[i]);
}
return result;
}
console.log(unique5([1,2,2,2,12,3,4,5]));
方法六:
function unique61(arr){
return [...(new Set(arr))];
}
console.log(unique61([1,2,2,2,12,3,4,5]));
function unique62(arr){
return Array.from(new Set(arr));
}
console.log(unique62([1,2,2,2,12,3,4,5]));