亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

JavaScript中數組去重的5種方法

瀏覽:90日期:2023-10-22 13:43:07

正常情況下,數據去重的工作一般都是由后端同事來完成的,但是前端也要掌握好處理數據的能力,萬一去重的工作交給我們大前端處理,我們也不能慫呀。現在我總結了一些去重的方法,希望對大家有點幫助。

方法一:new Set()實現數組去重

ES6 提供了新的數據結構 Set,它類似于數組,但是成員的值都是唯一的,沒有重復的值。 Set 本身是一個構造函數,用來生成 Set 數據結構。Set函數可以接受一個數組,用于初始化。根據 Set的數據特性,我們可以實現數組去重。

let list = [1, 1, ’a’, ’a’, true, true, false, false, null, ’’, null, ’’, undefined, undefined];let list1 = Array.from(new Set(list)); // [ 1, 'a', true, false, null, '', undefined ]let list2 = [...new Set(list)]; // [ 1, 'a', true, false, null, '', undefined ]

方法二:some()+循環去重

some() 方法用于檢測數組中的元素是否滿足指定條件(函數提供) 。 如果有一個元素滿足條件,則表達式返回true , 剩余的元素不會再執行檢測。 如果沒有滿足條件的元素,則返回false。 我們可以定義一個新數組來承接沒有重復的數據,遍歷原始數組的時候,用新數組來判斷數據是否已經出現過。

function distinct(list) { let result = [list[0]];// 用于承接沒有重復的數據,初始時將原始數組的第一個值賦給它。 for (let i = 1; i < list.length; i++) { // 判斷結果數組中是否存在一樣的值,若果沒有的話則將數據存入結果數組中。 if (!(result.some(val => list[i] === val))) { result.push(list[i]); } } return result; }let arr = [1, 1, ’a’, ’a’, true, true, false, false, null, ’’, null, ’’, undefined, undefined];distinct(arr); // [ 1, 'a', true, false, null, '', undefined ]

方法三:雙重for循環去重

雙重for循環,第一層循環確保數組中的每一項都能被比較,第二層循環確保被比較項后的每一項都能跟被比較項比較。

function distinct2(list) { for (let i = 0; i < list.length; i++) { for (let j = i + 1; j < list.length; j++) { // 后面數據的若跟前一項數據相同,則重復,需要去除。 if (list[i] === list[j]) {list.splice(j, 1); // 去除后面的相同項j--; } } } return list;}let arr = [1, 1, ’a’, ’a’, true, true, false, false, null, ’’, null, ’’, undefined, undefined];distinct2(arr); // [ 1, 'a', true, false, null, '', undefined ]

方法四:hasOwnProperty()方法去重

hasOwnProperty() 方法用來檢測一個屬性是否是對象的自有屬性,而不是從原型鏈繼承的。如果該屬性是自有屬性,那么返回 true,否則返回 false。

function unique(arr) { var obj = {}; // 用來記錄數組中的數據 return arr.filter(function(item, index, arr){ // 如果記錄對象中存在某個數據,則返回false過濾掉;否則obj進行記錄并篩選出來 return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true) })}let arr = [1,1,’true’,’true’,true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,’NaN’, 0, 0, ’a’, ’a’,{},{}];unique(arr) // [ 1, 'true', true, 15, false, undefined, null, NaN, 'NaN', 0, ’a’, {}]

方法五:利用filter()+indexOf()方法去重

indexOf() 方法可返回某個指定的字符串值在字符串中首次出現的位置。

function unique(arr) { return arr.filter(function(item, index, arr) { // 從數組0位開始查,如果當前元素在原始數組中的第一個索引==當前索引值,說明它是第一次出現。 return arr.indexOf(item, 0) === index; });}let list = [1, 1, ’a’, ’a’, true, true, false, false, null, ’’, null, ’’, undefined, undefined];unique(list); // [ 1, 'a', true, false, null, '', undefined ]

此外,數組去重還可以利用filter()、includes()等方法實現,但是思路都跟上面幾種方法類似,這里就不一一列舉了。

以上就是JavaScript中數組去重的5種方法的詳細內容,更多關于JavaScript中數組去重的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 在线欧美日韩国产 | 国产大学生露脸激情 | 日韩在线观看高清 | 成人午夜激情 | 大学生久久香蕉国产线观看 | 亚洲国产综合专区在线播一一 | 国产婷婷色综合成人精品 | 91国自产精品中文字幕亚洲 | 久久精品免费一区二区三区 | 国产亚洲精品一区在线播 | 国产成a人片在线观看视频 国产成a人片在线观看视频99 | 中文字幕亚洲综合久久2 | 99这里只精品热在线获取 | 在线播放一区二区三区 | 在线免费看黄视频 | 日韩第一页 | 亚洲精品一区二区三区四区手机版 | 亚洲国产欧美在线人成aaa | 亚洲高清成人欧美动作片 | 亚洲人欧洲日韩 | 色老99久久九九爱精品69堂 | 草啪啪| 亚洲日本人成中文字幕 | 久久国产精品成人免费 | www久久com| 国产无遮挡裸体免费视频在线观看 | 91久久综合九色综合欧美亚洲 | 国产成人免费永久播放视频平台 | 97色伦色在线综合视频 | 丁香婷婷综合五月六月 | 国产精品99久久久久久夜夜嗨 | 国产成人www| 久久爰www免费人成 久久狠狠干 | 六月丁香啪啪 | 大胆国模一区二区三区伊人 | 精品乱人伦一区二区三区 | 欧美日韩国产一区二区三区不卡 | 国产欧美日韩免费一区二区 | 国产影院在线观看 | 窝窝午夜精品一区二区 | 一级黄色网|