最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript數(shù)組去重的幾種方法詳解

 更新時(shí)間:2021年09月26日 16:22:45   投稿:BJT  
下面小編就為大家?guī)硪黄狫avascript數(shù)組去重的幾種方法詳?shù)慕榻B。小編覺得聽錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看

數(shù)組去重

1 雙層for循環(huán)(類似冒泡排序的雙層循環(huán)寫法)

var arr = [2,3,4,2,34,21,1,12,3,4,1]
for(var i =0;i<arr.length;i++){
    //第一層:每次循環(huán)拿到arr中一個(gè)元素
	for(var j=i+1;j<arr.length;j++){
        //第二層:每次拿到的元素再和每次拿到的元素后邊的元素依次進(jìn)行比對(因?yàn)榈谝粋€(gè)要從第二個(gè)開始比,第二個(gè)要從第三個(gè)比以此類推,所以這里的j應(yīng)比i大1為j=i+1)
    	if(arr[i] === arr[j]){
            //如果相同就刪除后邊的元素
        	arr.splice(j,1)
    	}
    }
}
//arr:[1, 2, 3, 4, 12, 21, 34]

2 循環(huán)和indexof、循環(huán)和includes

創(chuàng)建新數(shù)組,循環(huán)舊數(shù)組,看每次循環(huán)的元素是否存在于新數(shù)組中沒有就把當(dāng)前元素添加到新數(shù)組中

//indexof
var arr = [2,3,4,2,34,21,1,12,3,4,1]
var arr2 = []
arr.forEach((e)=>{
    if(arr2.indexOf(e)==-1){
        arr2.push(e)
    }
})
console.log(arr2)
//arr2:[1, 2, 3, 4, 12, 21, 34]
//includes
var arr = [2,3,4,2,34,21,1,12,3,4,1]
var arr2 = []
arr.forEach((e)=>{
    if(!arr2.includes(e)){
        arr2.push(e)
    }
})
console.log(arr2)
//arr2:[1, 2, 3, 4, 12, 21, 34]

3 利用對象屬性不能重復(fù)去重

var arr = [2,3,4,2,34,21,1,12,3,4,1]
var obj = {};
arr.forEach((e,i)=>{
    obj[arr[i]] = "abc";   
});
var arr2=Object.keys(obj)
console.log(arr2)
//arr2:["1", "2", "3", "4", "12", "21", "34"]
var arr3 = arr2.map(e => ~~e )
//arr3:[1, 2, 3, 4, 12, 21, 34]
//注意這種方法不僅給數(shù)組重新排列而且還改變了數(shù)組中元素的類型

~是js里的按位取反操作符,~~就是執(zhí)行兩次按位取反,其實(shí)就是保持原值,但是注意雖然是原值,但是對布爾型變量執(zhí)行這個(gè)操作,會轉(zhuǎn)化成相應(yīng)的數(shù)值型變量,也就是 ~~true === 1,~~false === 0。

4 ES6 Set

ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類似于數(shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。

var arr = [2,3,4,2,34,21,1,12,3,4,1]
var arr1 = [...new Set(arr)]
console.log(arr1)
//arr1:[1, 2, 3, 4, 12, 21, 34]

5 ES6 Array. prototype.filter()

注:indexOf在數(shù)組中找元素的時(shí)候,碰到符合條件的第一個(gè)就會把它的下標(biāo)返回

var arr = [2,3,4,2,34,21,1,12,3,4,1]
var arr2 = arr.filter((e,i)=>{
    //看每次循環(huán)的元素在數(shù)組中出現(xiàn)的第一個(gè)下標(biāo)位置(indexOf返回的位置),和每次循環(huán)的元素的下標(biāo)(filter循環(huán)每次的i)是否一致,一致就說明他就是第一個(gè)符合條件,不會被過濾掉。
    return arr.indexOf(e)==i;
})
console.log(arr2)
//arr2:[1, 2, 3, 4, 12, 21, 34]

6 ES6 Array. prototype.reduce()

var arr = [2,3,4,2,34,21,1,12,3,4,1]
var arr2 = arr.reduce((pre,e)=>{
    //這里當(dāng)然也可以用indexOf來判斷是否存在
    pre.includes(e)?pre:pre.push(e);
    return pre
},[])
console.log(arr2)
//arr2:[1, 2, 3, 4, 12, 21, 34]

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • js調(diào)用百度地圖及調(diào)用百度地圖的搜索功能

    js調(diào)用百度地圖及調(diào)用百度地圖的搜索功能

    本文給大家介紹js調(diào)用百度地圖的方法以及調(diào)用百度地圖的搜索功能,有需要的朋友可以跟著腳本之家的小編一起學(xué)習(xí)
    2015-09-09
  • Javascript玩轉(zhuǎn)繼承(一)

    Javascript玩轉(zhuǎn)繼承(一)

    最近一直在學(xué)Javascript,打算寫一些文章,算做自己的學(xué)習(xí)心得吧,也可以算是學(xué)習(xí)筆記。沒有系統(tǒng)的知識點(diǎn),太基礎(chǔ)的不想寫,主要是寫一些自己覺得有價(jià)值的地方
    2014-05-05
  • 淺析JavaScript中瀏覽器的兼容問題

    淺析JavaScript中瀏覽器的兼容問題

    下面小編就為大家?guī)硪黄獪\析JavaScript中瀏覽器的兼容問題。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考
    2016-04-04
  • 如何用JS將base64圖片壓縮至指定大小

    如何用JS將base64圖片壓縮至指定大小

    在開發(fā)中通常在上傳圖片時(shí),由于各種限制,需要將上傳的圖片壓縮到某一大小范圍內(nèi)才能上傳,這篇文章主要介紹了如何用JS將base64圖片壓縮至指定大小的相關(guān)資料,需要的朋友可以參考下
    2025-04-04
  • JavaScript實(shí)現(xiàn)時(shí)鐘特效

    JavaScript實(shí)現(xiàn)時(shí)鐘特效

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)時(shí)鐘特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • JavaScript使用docx-preview和mammoth預(yù)覽Docx

    JavaScript使用docx-preview和mammoth預(yù)覽Docx

    這篇文章主要為大家詳細(xì)介紹了兩個(gè)庫,即docx-preview和mammoth,利用它們,你就能在瀏覽器中完美預(yù)覽 Word 文檔,甚至連表格樣式,頁眉頁腳都原汁原味地呈現(xiàn)出來,下面我們來看看具體使用步驟吧
    2025-04-04
  • 7道關(guān)于JS this的面試題,你能答對幾個(gè)

    7道關(guān)于JS this的面試題,你能答對幾個(gè)

    這篇文章主要給大家介紹了7道關(guān)于JS this的面試題,來看看你能答對幾個(gè),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • js?字符串反轉(zhuǎn)(倒序)的幾種方式總結(jié)

    js?字符串反轉(zhuǎn)(倒序)的幾種方式總結(jié)

    這篇文章主要介紹了js?字符串反轉(zhuǎn)(倒序)的幾種方式總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • JavaScript技巧44招【實(shí)用】

    JavaScript技巧44招【實(shí)用】

    JavaScript是一個(gè)絕冠全球的編程語言,可用于Web開發(fā)、移動應(yīng)用開發(fā)(PhoneGap、Appcelerator)、服務(wù)器端開發(fā)(Node.js和Wakanda)等等。本文主要介紹JavaScript應(yīng)用的一些小技巧。
    2016-12-12
  • 使用js實(shí)現(xiàn)一個(gè)可編輯的select下拉列表

    使用js實(shí)現(xiàn)一個(gè)可編輯的select下拉列表

    這篇文章主要介紹了使用js實(shí)現(xiàn)一個(gè)可編輯的select下拉列表,個(gè)人感覺還不錯(cuò),需要的朋友可以參考下
    2014-02-02

最新評論

武乡县| 邹城市| 永新县| 广水市| 日照市| 淅川县| 和龙市| 休宁县| 阜康市| 遂溪县| 巨野县| 枣强县| 湾仔区| 奉节县| 宜阳县| 唐山市| 古蔺县| 通化县| 天全县| 化德县| 开封县| 中宁县| 新野县| 越西县| 元氏县| 嵊州市| 张家界市| 交城县| 西平县| 三台县| 枣强县| 涟水县| 罗山县| 泸州市| 岑巩县| 宁武县| 崇明县| 长春市| 阳山县| 丰顺县| 花莲市|