亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

如何利用es6去重

qpal / 2765人閱讀

摘要:實(shí)際上他進(jìn)行了以下的操作首先,我們創(chuàng)建了新的并且把數(shù)組當(dāng)作入?yún)鬟f了進(jìn)去,由于僅僅允許唯一值,所以所有重復(fù)值將會(huì)被移除?,F(xiàn)在重復(fù)值已經(jīng)消失了,我們將會(huì)利用把它重新轉(zhuǎn)為數(shù)組。

以下是三種方法從數(shù)組里去重,并且返回唯一的值。我最喜歡的方式是使用Set,因?yàn)樗亲疃套詈?jiǎn)單的。

const array = [5, 2, 4, 5, 3];
console.log([...new Set(array)])
console.log(array.filter((item, index) => array.indexOf(item) === index))
console.log(array.reduce((unique, item) => unique.includes(item) ? unique: [...unique, item], []))
// result:  [5, 2, 4, 3]

使用Set

讓我開始解釋Set是什么吧:

Set是由es6引入的一種新的數(shù)據(jù)對(duì)象,由于Set只允許你存儲(chǔ)唯一值,所以當(dāng)傳遞進(jìn)去一個(gè)數(shù)組的時(shí)候,它將會(huì)移除任何重復(fù)的值。

好啦,然我們回到我們的代碼中來看下到底都發(fā)生了什么。實(shí)際上他進(jìn)行了以下的操作:

首先,我們創(chuàng)建了新的Set并且把數(shù)組當(dāng)作入?yún)鬟f了進(jìn)去,由于Set僅僅允許唯一值,所以所有重復(fù)值將會(huì)被移除。

現(xiàn)在重復(fù)值已經(jīng)消失了,我們將會(huì)利用...把它重新轉(zhuǎn)為數(shù)組。

const array = [5, 2, 4, 5, 3];
const set = new Set(array)
const newArr = [...set]
console.log(newArr)
// result:  [5, 2, 4, 3]

使用Array.from()函數(shù)來吧Set轉(zhuǎn)為數(shù)組

另外呢,你也可以使用Array.from()來吧Set轉(zhuǎn)為數(shù)組。

const array = [5, 2, 4, 5, 3];
const set = new Set(array)
const newArr = Array.from(set)
console.log(newArr)
// result:  [5, 2, 4, 3]

使用filter

為了理解這個(gè)選項(xiàng),讓我們來看看這兩個(gè)方法都做了什么:indexOf和filter

indexOf()

indexOf()返回我們從數(shù)組里找到的第一個(gè)元素的索引。

const array = [5, 2, 4, 5, 3];
console.log(array.indexOf(5))  // 0
console.log(array.indexOf(2))  // 1
console.log(array.indexOf(8))  // -1

filter

filter()函數(shù)會(huì)根據(jù)我們提供的條件創(chuàng)建一個(gè)新的數(shù)組。換一種說法,如果元素通過并且返回true,它將會(huì)包含在過濾后的數(shù)組中,如果有元素失敗并且返回false,那么他就不會(huì)包含在過濾后的數(shù)組中。

我們逐步看看在每次循環(huán)數(shù)組的時(shí)候都發(fā)生了什么。

const array = [5, 2, 4, 5, 3];
array.filter((item, index) => {
  console.log(item, index, array.indexOf(item), array.indexOf(item) === index)
  return array.indexOf(item) === index
})
//輸出
// 5 0 0 true
// 2 1 1 true
// 4 2 2 true
// 5 3 0 false
// 3 4 4 true

上面輸出的代碼見注釋。重復(fù)的元素不再于indexOf相匹配,所以在這些情況下,它的結(jié)果將會(huì)是false并且將不會(huì)被包含進(jìn)過濾后的值當(dāng)中。

檢索重復(fù)的值

我們也可以在數(shù)組中利用filter()函數(shù)來檢索重復(fù)的值。我們只需要像這樣簡(jiǎn)單的調(diào)整下代碼:

const array = [5, 2, 4, 5, 3];
array.filter((item, index) => {
  console.log(item, index, array.indexOf(item), array.indexOf(item) !== index)
  return array.indexOf(item) !== index
})
//輸出
// 5 0 0 false
// 2 1 1 false
// 4 2 2 false
// 5 3 0 true
// 3 4 4 false

使用reduce()函數(shù)

reduce()函數(shù)用于減少數(shù)組的元素并根據(jù)你傳遞過去的reducer函數(shù),把他們最終合并到一個(gè)最終的數(shù)組中,

在這種情況下,我們的reducer()函數(shù)我們最終的數(shù)組是否包含了這個(gè)元素,如果不包含,就吧他放進(jìn)最終的數(shù)組中,反之則跳過這個(gè)元素,最后再返回我們最終的元素。

reduce()函數(shù)理解起來總是有那么一點(diǎn)費(fèi)勁,所以呢,咱們現(xiàn)在看下他是怎么運(yùn)行的。

const array = [5, 2, 4, 5, 3];
array.reduce((unique, item) => {
  console.log(item, unique, unique.includes(item), unique.includes(item) ? unique: [...unique, item])
  return unique.includes(item) ? unique: [...unique, item]
}, [])
//輸出
// 5 []          false   [5]
// 2 [5]         false   [5, 2]
// 4 [5, 2]      false   [5, 2, 4]
// 5 [5, 2, 4]   true    [5, 2, 4]
// 3 [5, 2, 4]   false   [5, 2, 4, 3]

轉(zhuǎn)載自:http://www.lht.ren/article/12/

歡迎關(guān)注本人微信公眾號(hào):干貨技術(shù)

翻譯自:

https://medium.com/dailyjs/ho...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/101060.html

相關(guān)文章

  • JavaScript數(shù)組方法之?dāng)?shù)組去重方法

    摘要:工作過程中經(jīng)常會(huì)用到數(shù)組去重,用到的時(shí)候往往一時(shí)想不到好方法,所以這里來總結(jié)一下去重方法。和方法分別為添加成員方法和得到鍵值方法。因此,利用方法也可以實(shí)現(xiàn)數(shù)組的去重。 工作過程中經(jīng)常會(huì)用到數(shù)組去重,用到的時(shí)候往往一時(shí)想不到好方法,所以這里來總結(jié)一下去重方法。使用es6去重代碼很簡(jiǎn)單,而且ES6已經(jīng)相當(dāng)普及了。所以先來介紹一下es6中的方法。 1.ES6中Map結(jié)構(gòu)方法 function...

    CarlBenjamin 評(píng)論0 收藏0
  • JS數(shù)組去重總結(jié)

    摘要:數(shù)組去重,一般會(huì)在面試的時(shí)候才會(huì)碰到,要求手寫數(shù)組去重方法的代碼。在實(shí)際項(xiàng)目中碰到的數(shù)組去重,一般都是后臺(tái)去處理,很少讓前端處理數(shù)組去重。數(shù)組去重的方法一利用去重中最常用如果不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般會(huì)在面試的時(shí)候才會(huì)碰到,要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對(duì)你刮目相看。 在實(shí)際項(xiàng)目中碰到的...

    whinc 評(píng)論0 收藏0
  • JS數(shù)組去重方法小結(jié)

    摘要:數(shù)組去重看了網(wǎng)上很多數(shù)組去重方法,用的比較常見的大概就幾種,今天想自己來做一個(gè)總結(jié)。還有就是方法返回的數(shù)組也是排序后的數(shù)組,某些情況下可能不符合要求。 JS數(shù)組去重 看了網(wǎng)上很多數(shù)組去重方法,用的比較常見的大概就幾種,今天想自己來做一個(gè)總結(jié)。部分內(nèi)容參考該博客 1 . 在原數(shù)組上操作(基本方法) 思路:利用循環(huán)嵌套,判斷數(shù)組中每個(gè)元素與其后面的元素是否相等,如果相等,就使用spli...

    PascalXie 評(píng)論0 收藏0
  • 數(shù)組去重--這幾種方法夠不?

    摘要:數(shù)組去重是校招面試的必考知識(shí)點(diǎn)。以下就是筆者所實(shí)現(xiàn)的數(shù)組去重的幾種簡(jiǎn)單的方式。結(jié)合實(shí)現(xiàn)這種方法的關(guān)鍵點(diǎn)就是判斷是否相同的時(shí)候不要忽略對(duì)元素類型的判斷。以上就是筆者所想到的幾個(gè)數(shù)組去重的方式大家如果有更好的方法歡迎留言。 數(shù)組去重,是校招面試的必考知識(shí)點(diǎn)。簡(jiǎn)單的說,數(shù)組去重就是將一個(gè)數(shù)組中的相同的元素刪除,只保留其中的一個(gè)。這里的相同其實(shí)是一個(gè)陷阱,有好多同學(xué)只認(rèn)為值相等即為相同,而忽略...

    wendux 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

qpal

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<