日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS数组去重方法小结

發(fā)布時間:2023/12/31 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS数组去重方法小结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JS數(shù)組去重

看了網(wǎng)上很多數(shù)組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結(jié)。
部分內(nèi)容參考該博客


1 . 在原數(shù)組上操作(基本方法)
思路:利用循環(huán)嵌套,判斷數(shù)組中每個元素與其后面的元素是否相等,如果相等,就使用splice方法刪掉后面的元素,注意j--。

function dedupe2(arr) {for (var i = 0; i < arr.length; i++) {for (var j = i + 1; j < arr.length; j++) {if (arr[i] == arr[j]) {arr.splice(j, 1);j--;}}}return arr; }

2 . 數(shù)組去重后返回一個新數(shù)組

思路:新建一個數(shù)組,遍歷需要去重的數(shù)組,使用indexOf判斷新數(shù)組中是否包含之前數(shù)組中每一項,不包含就push進去。

function dedupe1(arr) {var newarr = [];for (var i = 0; i < arr.length; i++) {if (newarr.indexOf(arr[i]) == -1) {newarr.push(arr[i]);}}return newarr; }

3 . 利用對象的屬性去重
思路:每次從數(shù)組中取出一個元素,到對象中去訪問這個屬性,如果能訪問到就說明重復。

function dedupe3(arr) {var newarr = [];var obj = {};for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {newarr.push(arr[i]);obj[arr[i]] = 1;}}return newarr; }

4 . 利用ES6中的Set數(shù)據(jù)結(jié)構(gòu)和擴展運算符(參考ES6標準入門)

[...new Set([array])];

5 . 還是利用ES6中的Set

function dedupe4(arr) {return Array.from(new Set(arr)); }

當然,數(shù)組去重的方法還有很多很多很多,例如常用的先排序后去重,但是我看了一些帖子,發(fā)現(xiàn)其中存在一些問題,排序時是用到了sort方法,但是并沒有給sort方法一個正確的排序函數(shù),默認情況下sort方法比較的是字符串,因此會出現(xiàn)一些問題。還有就是sort方法返回的數(shù)組也是排序后的數(shù)組,某些情況下可能不符合要求。

以上只是個人的一個小總結(jié),代碼都是經(jīng)過測試后的,有問題請指正,也歡迎大家補充,謝謝。

總結(jié)

以上是生活随笔為你收集整理的JS数组去重方法小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。