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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组去重(包括es6)

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组去重(包括es6) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.最基本的去重方法

思路:定義一個新數組,并存放原數組的第一個元素,然后將元素組一一和新數組的元素對比,若不同則存放在新數組中。

function unique(arr){var repeat=false;var res = [arr[0]];for(var i=1;i<arr.length;i++){var repeat = false;for(var j=0;j<res.length;j++){if(arr[i] === res[j]){repeat = true;break;}}if(!repeat){res.push(arr[i]);}}return res; }

2.先排序在去重

思路:先將原數組排序,在與相鄰的進行比較,如果不同則存入新數組

function unique(arr){var arr2 = arr.sort();var res = [arr2[0]];for(var i=1;i<arr2.length;i++){if(arr2[i] !== res[res.length-1]){res.push(arr2[i]);}}return res; }

這個方法不推薦:比如

var arr=[1,'1',2,1,3,4,1]; var arr2=arr.sort(); console.log(arr2);//[1, "1", 1, 1, 2, 3, 4] unique(arr);//[1,"1",1,2,3,4]

3.利用reduce去重(推薦)

arr.reduce(callback,[initialValue])
callback (執行數組中每個值的函數,包含四個參數)

  • prev (第一次的prev的值是數組的第一個值或者是提供的初始值(initialValue),上一次調用回調返回的值)
  • curr (prev設置初始值的化,curr就為數組第一個值,否則為第二個值。數組中當前被處理的元素)
  • index (當前元素在數組中的索引)
  • array (調用 reduce 的數組)
  • initialValue (作為第一次調用 callback 的第一個參數。)

    //初始化prev為[],curr為1 newArr4 = arr4.reduce((prev, curr) => prev.includes(curr)? prev : [...prev,curr],[])

    4.利用對象的屬性去重(推薦)

    思路:每次取出原數組的元素,然后在對象中訪問這個屬性,如果存在就說明重復

    function unique(arr){var res =[];var json = {};for(var i=0;i<arr.length;i++){if(!json[arr[i]]){res.push(arr[i]);json[arr[i]]={};json[arr[i]].key=arr[i];}}return res; }

    這個方法不推薦使用:比如

    var arr=[1,'1',2,3]; unique(arr);// [1, 2, 3]

    5.利用indexOf或includes查詢

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

    使用es6 數組includes()方法

    let newArr2 = [] for (let i = 0; i < arr.length; i++) {if (!newArr2.includes(arr[i])) {newArr2.push(arr[i])}} console.log(newArr2);

    indexOf方法有兩個缺點,一是不夠語義化,它的含義是找到參數值的第一個出現位置,所以要去比較是否不等于-1,表達起來不夠直觀。二是,它內部使用嚴格相等運算符(===)進行判斷,這會導致對NaN的誤判。

    6.es6的Set與Array.from() (最簡潔)

    set是一種新的數據結構,它可以接收一個數組或者是類數組對象,自動去重其中的重復項目,set返回的是一個對象。
    Array.from()的作用,可以把偽類數組對象,可迭代對象轉化為數組。

    var arr=[1,2,1,'1',null,null,undefined,undefined,NaN,NaN] let res=Array.from(new Set(arr));//{1,2,"1",null,undefined,NaN} //or let newarr=[...new Set(arr)]

    總結

    以上是生活随笔為你收集整理的数组去重(包括es6)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久久久久久久久久久久久久久久久久 | 欧美做受 | 免费看片网站91 | 国内av片 | 蜜桃在线一区二区三区 | 欧美日韩精品区别 | 成人影| 国产思思 | 黄色大片视频网站 | 嫩草视频91 | 超碰夫妻 | 日韩欧美精品 | 日韩aⅴ视频 | www.youjizz.com亚洲| 日韩人妻精品一区二区三区视频 | 欧美一页 | 一区二区亚洲视频 | 日韩一级黄色片 | 欧美综合一区 | 天天av综合| 亚洲精品伊人 | 欧美成人女星 | 91涩漫成人官网入口 | 一区二区三区四区五区六区 | 精品视频一区二区 | 91视频国产一区 | 国产在线观看网站 | 国产懂色av| 一区二区视频免费观看 | 国产午夜精品一区二区理论影院 | 高清欧美性猛交xxxx黑人猛交 | 又黄又爽的视频在线观看 | 久久亚洲精品视频 | 一本视频| 日韩免费在线视频 | 免费se99se| 法国空姐在线观看免费 | 欧美婷婷精品激情 | 99热成人 | 亚洲春色av | 国产91精品一区二区麻豆亚洲 | 99精品一级欧美片免费播放 | 91香蕉国产在线观看 | 免费福利在线观看 | 国产在线专区 | 欧美精品一区二区在线播放 | 在线涩涩 | 中文有码视频 | 新红楼梦2005锦江版高清在线观看 | 91久久一区二区 | av网站免费看 | 深爱五月激情网 | 精品久久免费 | 国产精品亚洲欧美 | 国产夜夜夜 | 亚洲永久免费视频 | 久久久久国色av免费观看性色 | 不卡日韩| 光棍影院av | aaaaa一级片| 亚洲天堂中文字幕在线 | 成人午夜视频免费看 | av在线免费不卡 | 精品国产av一区二区 | 5月婷婷6月丁香 | 啪啪在线观看 | 国产二级视频 | 国产青青草在线 | 在线观看欧美日韩视频 | 青草青在线视频 | 好男人www在线视频 我们的2018在线观看免费高清 | 欧美日韩资源 | 久久免费资源 | 日本成人在线看 | 黄色一级视频网站 | 亲子乱对白乱都乱了 | 婷婷丁香六月天 | 中国妇女做爰视频 | 国产色吧| 91视频在线观看 | 国产精品久久久久无码av | 伊人网视频| 国产一区影院 | 亚洲精品综合在线 | 黄色一级片网站 | 亚洲一区福利视频 | 亚洲黄色中文字幕 | 另类小说色综合 | 成年人色片 | zzji欧美大片| 欧美性猛交久久久乱大交小说 | 性高潮免费视频 | 农村老女人av | 国产免费一区二区视频 | 涩涩视频在线观看免费 | 性做久久久久久久久久 | 特级西西www444人体聚色 | 中文字幕在线视频播放 | 色妞色视频一区二区三区四区 |