1. 程式人生 > >ES6陣列去重的最佳實踐:Set結合Array.from() | 拓展運算子結合 Set

ES6陣列去重的最佳實踐:Set結合Array.from() | 拓展運算子結合 Set

前言

ES5及之前大多都是用遍歷和演算法來實現陣列去重,在ES6有一個更為簡便的方式。ES6之Set,Array.from, ...

實踐

1. Set + Array.from()

這裡使用的是Set的一個特性,集合中不會包含重複項。結合Array.from()實現陣列去重 ,看圖

這裡寫圖片描述

從圖中看出,經過轉化的陣列是可以正常陣列操作的。那麼多賦值可以精簡為兩條程式碼或走一條;

var set1 = Array.from(new Set([1,1,2,2,33,'33',44,'44'
]))

//Array.from是個好東東,抽空再寫詳細點的文章
//可以把類陣列物件(array-like obj)和可迭代物件(iterable objects -- eg:Map or Set)轉為常規陣列。。。

2. …[拓展運算子] + Set

這裡寫圖片描述

/**
* ...拓展運算子,是遍歷Symbol.iterator 
* 和for...of一樣的遍歷方法
*/
var tt  = [...new Set([5,5,6,6,8,])] // 5,6,8

總結

一直想寫個ES6特性的系列文章,整理了一段時間,不想寫概而全的純理論,只想寫一些貼近工作的,
最常用到的,比如塊級作用域,箭頭函式,字串模板等等---敬請期待

上面那兩個方法並不是萬能的,只能作為常規的陣列去重,因為涉及到物件或者多維陣列的去重,
還是需要其他一些方法來輔助,該遍歷遍歷,該比較還是得比較。。。。

相關推薦

ES6陣列最佳實踐Set結合Array.from() | 拓展運算子結合 Set

前言 ES5及之前大多都是用遍歷和演算法來實現陣列去重,在ES6有一個更為簡便的方式。ES6之Set,Array.from, ... 實踐 1. Set + Array.from()

es6 陣列及最大最小值獲取

1.陣列去重 解決方案:使用了ES6新增的set資料解構的去重特性,然後在將生成的set物件轉換成陣列。 <script type="text/javascript"> var arr = [1, 2, 3, 5, 1, 5, 7, 3];var newArray = A

ES6陣列的方法(方法集合)

方法一: function unique(arr) { const res = new Map(); return arr.filter((a) => !res.has(a) &

ES6陣列寫法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti

【筆記】利用ES6set屬性實現陣列

物件去重法:var arr=[1,1,2,9,3,8,6]; var obj = {}; for (var i = 0; i < arr.length; i++) { obj[arr[i]]=arr[i]; } console.log(obj); var arr2 =

es6的學習(set結構陣列

現在es6逐漸成為了進入了前端開發的視野裡,各大瀏覽器和流行的框架對es6的支援也非常好,之前看過幾次阮一峰老師寫的es6入門這本書,感覺非常不錯,所以是時候再深入地去學習總結一下了。那麼就先從set結構陣列去重開始吧。 以前陣列去重非常麻煩,我之前也總結過。

深入淺出瞭解世上最全的陣列方式

 //第一種:IndexOf(最簡單陣列去重法)/** 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中* IE8以下不支援陣列的indexOf方法* */ function uniq(array) { var temp = []; //一個新的臨時陣列 for (var i = 0; i

陣列(es5,es6)

const arr = [1,2,"1",null,null,undefined,undefined,false,false,NaN,NaN]; 1.0 遍歷 無法判斷NaN //for迴圈去重,效率較高 const unique1 = (arr)=>{

js實現陣列-ES6實現

方法一: function unique(arr) { const res = new Map(); return arr.filter((a) => !res.has(a) && res.set(a, 1)) } 就這麼

JavaScript陣列ES6的兩種方式

說明 JavaScript陣列去重這個問題,經常出現在面試題中,以前也寫過一篇陣列去重的文章,(JavaScript 陣列去重的多種方法原理詳解)但感覺程式碼還是有點不夠簡單,今天和大家再說兩種方法,程式碼可是足夠的少了。 解釋 方法一: function un

TODO-16種陣列方法-面試題

前兩天看到有一個人在總結面試的時候寫到問到了陣列去重,說是方法很多。一時手癢把我能想到的都寫出來了。 1、最傳統的方法,“鏈式”檢索,這個方法雖說是雙層for迴圈巢狀,但是能夠保留陣列原有的順序,對於有順序要求的可以用這個,而且可以相容低版本瀏覽器。 let a

演算法練習兩指標之有序陣列

問題描述 給出一個有序陣列,就地移除重複元素,保持每個元素只出現一次,並返回新陣列的長度。 問題分析 這個比較簡單,直接使用兩個指標,一個在前,一個在後,掃描一遍陣列即可。時間複雜度為O(n^2)。

演算法練習八 排序陣列

題目: 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列 解答:     <script type="text/javascript"> &n

es6Array.from()和陣列

Array.from() 1.複製陣列,如果傳的是陣列,將把陣列複製一份傳給新陣列。 let arr = [1,2,3,4,5]; let arr2 = Array.from(arr); console.log(arr) // [1,2,3,4,5] con

ES6實現陣列

ES6 提供了新的資料結構 Set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。 Array.from方法可以將 Set 結構轉為陣列。 例如: const items = new S

es6新增的陣列方法

function dedupe(arr){ return Array.form(new Set(arr)); } dedupe([1,2,3,4,5,55,5,5]); 不用冒泡、快排,一句程式碼搞

OpenJudge百鍊習題解答(C++)--題4085陣列排序

題: 總時間限制: 1000ms 記憶體限制: 1000kB 描述 小吉是銀行的會計師,在處理銀行帳目的時候,遇到了一些問題。有一系列整數,其中含有重複的整數,需要去掉重複後,排序輸出,你能幫助小

JS陣列之利用set資料結構

在常用的JS去重方法中,都是通過迴圈遍歷來去重,難免麻煩了不少。這邊發現ES6中有更加方便的去重方式,記錄一下。 1、set資料結構 ES6提供了新的資料結構Set。類似於陣列,只不過其成員值都

一句程式碼搞定陣列 Set()

[...new Set([1, "1", -1, 1,2,3,4,5, 1, 3])] (7) [1, "1", -1, 2, 3, 4, 5] 哈哈  有木有很神奇; Set是ES6提供的新的資料結構,類似於陣列,但是值都是唯一的,不會有重複的值; Set本身是一個建構函

C++ 利用set為vector陣列

#include<set> #include<vector> #include<iostream> using namespace std; int main() {vector<int> vec;vec = { 1, 2,