国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

JavaScript中數(shù)組去重的5種方法

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

正常情況下,數(shù)據(jù)去重的工作一般都是由后端同事來完成的,但是前端也要掌握好處理數(shù)據(jù)的能力,萬一去重的工作交給我們大前端處理,我們也不能慫呀?,F(xiàn)在我總結(jié)了一些去重的方法,希望對(duì)大家有點(diǎn)幫助。

方法一:new Set()實(shí)現(xiàn)數(shù)組去重

ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set,它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。 Set 本身是一個(gè)構(gòu)造函數(shù),用來生成 Set 數(shù)據(jù)結(jié)構(gòu)。Set函數(shù)可以接受一個(gè)數(shù)組,用于初始化。根據(jù) Set的數(shù)據(jù)特性,我們可以實(shí)現(xiàn)數(shù)組去重。

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()+循環(huán)去重

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

function distinct(list) { let result = [list[0]];// 用于承接沒有重復(fù)的數(shù)據(jù),初始時(shí)將原始數(shù)組的第一個(gè)值賦給它。 for (let i = 1; i < list.length; i++) { // 判斷結(jié)果數(shù)組中是否存在一樣的值,若果沒有的話則將數(shù)據(jù)存入結(jié)果數(shù)組中。 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循環(huán)去重

雙重for循環(huán),第一層循環(huán)確保數(shù)組中的每一項(xiàng)都能被比較,第二層循環(huán)確保被比較項(xiàng)后的每一項(xiàng)都能跟被比較項(xiàng)比較。

function distinct2(list) { for (let i = 0; i < list.length; i++) { for (let j = i + 1; j < list.length; j++) { // 后面數(shù)據(jù)的若跟前一項(xiàng)數(shù)據(jù)相同,則重復(fù),需要去除。 if (list[i] === list[j]) {list.splice(j, 1); // 去除后面的相同項(xiàng)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() 方法用來檢測(cè)一個(gè)屬性是否是對(duì)象的自有屬性,而不是從原型鏈繼承的。如果該屬性是自有屬性,那么返回 true,否則返回 false。

function unique(arr) { var obj = {}; // 用來記錄數(shù)組中的數(shù)據(jù) return arr.filter(function(item, index, arr){ // 如果記錄對(duì)象中存在某個(gè)數(shù)據(jù),則返回false過濾掉;否則obj進(jìn)行記錄并篩選出來 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() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。

function unique(arr) { return arr.filter(function(item, index, arr) { // 從數(shù)組0位開始查,如果當(dāng)前元素在原始數(shù)組中的第一個(gè)索引==當(dāng)前索引值,說明它是第一次出現(xiàn)。 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 ]

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

以上就是JavaScript中數(shù)組去重的5種方法的詳細(xì)內(nèi)容,更多關(guān)于JavaScript中數(shù)組去重的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 亚洲高清在线视频 | 91最新网站免费 | 一级一级特黄女人精品毛片 | 加勒比一本大道香蕉在线视频 | 亚洲国产精久久久久久久 | 欧美另类视频在线观看 | 黄色美女视频免费 | 在线亚洲自拍 | 欧美激情视频一级视频一级毛片 | 欧美日韩精品一区二区三区视频 | 日本三级在线观看中文字 | 一本综合久久国产二区 | 长腿美女被啪的欲仙欲死视频 | 成人国产片免费 | 国产只有精品 | 国产孕妇孕交大片孕 | 欧美黑寡妇特a级做爰 | 亚洲成a人片在线观看中文 亚洲成a人片在线观看中文!!! | 国产激情视频网站 | 国产成人综合久久亚洲精品 | 国产亚洲精品高清在线 | 日本高清视频一区二区 | 精品欧美亚洲韩国日本久久 | 成人免费福利网站在线看 | 久久成人在线 | 欧美一区二区亚洲 | 国产成人综合久久精品红 | 中文字幕免费观看 | 欧美一区二区三区四区在线观看 | 一级特色黄大片 | 亚洲国产天堂在线网址 | 国产免费福利体检区久久 | 国产精品久久国产三级国不卡顿 | 性做久久久久免费观看 | 成人区在线观看免费视频 | 亚洲成人高清在线观看 | 精品视频在线免费看 | 免费观看欧美一级片 | 精品久久中文字幕有码 | 日韩三级欧美 | 亚洲精品人成网在线播放影院 |