JS實現陣列去重的方法(6種)

2022-03-25 03:05:23 字數 4286 閱讀 2428

方法一:

雙層迴圈,外層迴圈元素,內層迴圈時比較值

如果有相同的值則跳過,不相同則push進陣列?1

2345

6789

1011

1213

1415

1617

18array.prototype.distinct =function()

}

result.push(arr[i]);

}

returnresult;

}

vararra = [1,2,3,4,4,1,1,2,1,1,1];

arra.distinct();//返回[3,4,2,1]

方法二:利用splice直接在原陣列進行操作

雙層迴圈,外層迴圈元素,內層迴圈時比較值

值相同時,則刪去這個值

注意點:刪除元素之後,需要將陣列的長度也減1.?1

2345

6789

1011

1213

1415

1617

1819

array.prototype.distinct =function()

}

}

returnarr;

};

vara = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

varb = a.distinct();

console.log(b.tostring());//1,2,3,4,5,6,56

優點:簡單易懂

缺點:占用記憶體高,速度慢

方法三:利用物件的屬性不能相同的特點進行去重?1

2345

6789

1011

1213

1415

1617

array.prototype.distinct =function(),

result = ,

len = arr.length;

for(i = 0; i< arr.length; i++)

}

returnresult;

};

vara = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];

varb = a.distinct();

console.log(b.tostring());//1,2,3,4,5,6,56

方法四:陣列遞迴去重

運用遞迴的思想

先排序,然後從最後開始比較,遇到相同,則刪除?1

2345

6789

1011

1213

1415

1617

1819

20array.prototype.distinct =function())

functionloop(index)

loop(index - 1);//遞迴loop函式進行去重

}

}

loop(len-1);

returnarr;

};

vara = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];

varb = a.distinct();

console.log(b.tostring());//1,2,3,4,5,6,45,56

方法五:利用indexof以及foreach?1

2345

6789

1011

1213

1415

array.prototype.distinct =function()

})

returnresult;

};

vara = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];

varb = a.distinct();

console.log(b.tostring());//1,23,2,3

方法六:利用es6的set

set資料結構,它類似於陣列,其成員的值都是唯一的。

利用array.from將set結構轉換成陣列?1

234functiondedupe(array)

dedupe([1,1,2,3])//[1,2,3]

拓展運算子(...)內部使用for...of迴圈?1

23let arr = [1,2,3,3];

let resultarr = [...newset(arr)];

console.log(resultarr);//[1,2,3]

下面給大家補充介紹合併陣列並去重的方法

一、concat()方法

思路:concat() 方法將傳入的陣列或非陣列值與原陣列合併,組成乙個新的陣列並返回。該方法會產生乙個新的陣列。?1

2345

functionconcatarr(arr1, arr2)

思路:該方法優點是不會產生乙個新的陣列。?1

2345

6789

10vara = [1, 2, 3];

varb = [4, 5, 6];

//a=[1,2,3,4,5,6]

functionconcatarray(arr1,arr2)

JS陣列去重的6種演算法實現

1.遍歷陣列法 最簡單的去重方法,實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 原始碼如下 var arr 1,3,5,7,9,1,9,5,9,3,5,...

JS陣列去重的6種演算法實現

1.遍歷陣列法 最簡單的去重方法,實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 原始碼如下 var arr 1,3,5,7,9,1,9,5,9,3,5,...

JS陣列去重的6種演算法實現

1.遍歷陣列法 最簡單的去重方法,實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 原始碼如下 var arr 1,3,5,7,9,1,9,5,9,3,5,...