成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS將數(shù)組扁平化去并除其中重復(fù)部分?jǐn)?shù)據(jù),最終得到一個(gè)升序且不重復(fù)的數(shù)組

godruoyi / 830人閱讀

摘要:題目已知如下數(shù)組編寫一個(gè)程序?qū)?shù)組扁平化去并除其中重復(fù)部分?jǐn)?shù)據(jù),最終得到一個(gè)升序且不重復(fù)的數(shù)組實(shí)現(xiàn)數(shù)組扁平化去重排序解析數(shù)組扁平化判斷數(shù)組子元素是否為數(shù)組是的話進(jìn)行遞歸否則把子元素變?yōu)閿?shù)組的執(zhí)行結(jié)果為的執(zhí)行結(jié)果為數(shù)組去重通過實(shí)現(xiàn)

題目:

已知如下數(shù)組:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
編寫一個(gè)程序?qū)?shù)組扁平化去并除其中重復(fù)部分?jǐn)?shù)據(jù),最終得到一個(gè)升序且不重復(fù)的數(shù)組

實(shí)現(xiàn):

var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

//數(shù)組扁平化
Array.prototype.flat = function() {
  return [].concat(...this.map(item => (Array.isArray(item) ? item.flat() : [item])));
}

//去重
Array.prototype.unique = function() {
  return [...new Set(this)]
}

//排序
const sort = (a, b) => a - b;

console.log(arr.flat().unique().sort(sort));

解析:

數(shù)組扁平化,判斷數(shù)組子元素是否為數(shù)組,是的話進(jìn)行遞歸,否則把子元素變?yōu)閿?shù)組

this.map(item => (Array.isArray(item) ? item.flat() : [item]))的執(zhí)行結(jié)果為

[[[1], [2], [2]], [[3], [4], [5], [5]], [[6], [7], [8], [9], [[11], [12], [[12], [13], [[14]]]]], [10]]

[].concat(...this.map(item => (Array.isArray(item) ? item.flat() : [item])))的執(zhí)行結(jié)果為

[].concat([1], [2], [2]) -> [1, 2, 2]

[].concat([3], [4], [5], [5]) -> [3, 4, 5, 5]

[].concat([].concat([6], [7], [8], [9], [].concat([11], [12], [].concat([12], [13], [].concat([14]))))) -> [6, 7, 8, 9, 11, 12, 12, 13, 14]

[].concat([10]) -> [10]

[].concat([1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, 11, 12, 12, 13, 14], [10]) -> [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]

數(shù)組去重, 通過Set實(shí)現(xiàn)

new Set(this) -> {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 10}

[...new Set(this)] -> [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 10]

數(shù)組升序排序,通過sort實(shí)現(xiàn),若a - b > 0,返回true,a與b更換位置

最后結(jié)果為

[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ]

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105531.html

相關(guān)文章

  • 一個(gè)題對(duì)于數(shù)組平化與去重與排序

    摘要:已知如下數(shù)組編寫一個(gè)程序?qū)?shù)組扁平化去并除其中重復(fù)部分?jǐn)?shù)據(jù),最終得到一個(gè)升序且不重復(fù)的數(shù)組參考上大佬的方法一步到位。自己的多重函數(shù)法首先定義一個(gè)函數(shù),實(shí)現(xiàn)數(shù)組的扁平化當(dāng)數(shù)據(jù)都扁平化了,那么繼續(xù)常規(guī)操作。 已知如下數(shù)組:var arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14,15,66,12]]]],10];編寫一個(gè)程序...

    Terry_Tai 評(píng)論0 收藏0
  • 【進(jìn)階 6-1 期】JavaScript 高階函數(shù)淺析

    摘要:引言本期開始介紹中的高階函數(shù),在中,函數(shù)是一種特殊類型的對(duì)象,它們是。簡單來說,高階函數(shù)是一個(gè)接收函數(shù)作為參數(shù)傳遞或者將函數(shù)作為返回值輸出的函數(shù)。我們來看看使用它們與不使用高階函數(shù)的方案對(duì)比。引言 本期開始介紹 JavaScript 中的高階函數(shù),在 JavaScript 中,函數(shù)是一種特殊類型的對(duì)象,它們是 Function objects。那什么是高階函數(shù)呢?本節(jié)將通過高階函數(shù)的定義來展...

    yiliang 評(píng)論0 收藏0
  • 前端 100 問:能搞懂80%請把簡歷給我

    摘要:解析第題第題為什么的和的中不能做異步操作解析第題第題京東下面代碼中在什么情況下會(huì)打印解析第題第題介紹下及其應(yīng)用。盡量減少操作次數(shù)。解析第題第題京東快手周一算法題之兩數(shù)之和給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。 引言 半年時(shí)間,幾千人參與,精選大廠前端面試高頻 100 題,這就是「壹題」。 在 2019 年 1 月 21 日這天,「壹題」項(xiàng)目正式開始,在這之后每個(gè)工...

    Scott 評(píng)論0 收藏0
  • JS數(shù)組幾個(gè)不low操作(3)

    摘要:序列文章面試之函數(shù)面試之對(duì)象前言本文主要從應(yīng)用來講數(shù)組的一些騷操作如一行代碼扁平化維數(shù)組數(shù)組去重求數(shù)組最大值數(shù)組求和排序?qū)ο蠛蛿?shù)組的轉(zhuǎn)化等上面這些應(yīng)用場景你可以用一行代碼實(shí)現(xiàn)扁平化維數(shù)組終極篇是扁平數(shù)組的表示維度值為時(shí)維度為無限大開始篇實(shí)質(zhì) showImg(https://segmentfault.com/img/bVbpRMS?w=1858&h=1286); 序列文章 JS面試之函數(shù)...

    fish 評(píng)論0 收藏0
  • JavaScript專題系列文章

    摘要:專題系列共計(jì)篇,主要研究日常開發(fā)中一些功能點(diǎn)的實(shí)現(xiàn),比如防抖節(jié)流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點(diǎn)是研究專題之函數(shù)組合專題系列第十六篇,講解函數(shù)組合,并且使用柯里化和函數(shù)組合實(shí)現(xiàn)模式需求我們需要寫一個(gè)函數(shù),輸入,返回。 JavaScript 專題之從零實(shí)現(xiàn) jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實(shí)現(xiàn)一個(gè) jQuery 的 ext...

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

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

0條評(píng)論

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