陣列去重的六種方法與擴充套件
阿新 • • 發佈:2019-01-09
方法一:
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]));