摘要:題目已知如下數(shù)組編寫一個程序?qū)?shù)組扁平化去并除其中重復部分數(shù)據(jù),最終得到一個升序且不重復的數(shù)組實現(xiàn)數(shù)組扁平化去重排序解析數(shù)組扁平化判斷數(shù)組子元素是否為數(shù)組是的話進行遞歸否則把子元素變?yōu)閿?shù)組的執(zhí)行結(jié)果為的執(zhí)行結(jié)果為數(shù)組去重通過實現(xiàn)
題目:
已知如下數(shù)組:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
編寫一個程序?qū)?shù)組扁平化去并除其中重復部分數(shù)據(jù),最終得到一個升序且不重復的數(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ù)組,是的話進行遞歸,否則把子元素變?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實現(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實現(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://specialneedsforspecialkids.com/yun/105531.html
摘要:已知如下數(shù)組編寫一個程序?qū)?shù)組扁平化去并除其中重復部分數(shù)據(jù),最終得到一個升序且不重復的數(shù)組參考上大佬的方法一步到位。自己的多重函數(shù)法首先定義一個函數(shù),實現(xiàn)數(shù)組的扁平化當數(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];編寫一個程序...
摘要:引言本期開始介紹中的高階函數(shù),在中,函數(shù)是一種特殊類型的對象,它們是。簡單來說,高階函數(shù)是一個接收函數(shù)作為參數(shù)傳遞或者將函數(shù)作為返回值輸出的函數(shù)。我們來看看使用它們與不使用高階函數(shù)的方案對比。引言 本期開始介紹 JavaScript 中的高階函數(shù),在 JavaScript 中,函數(shù)是一種特殊類型的對象,它們是 Function objects。那什么是高階函數(shù)呢?本節(jié)將通過高階函數(shù)的定義來展...
摘要:解析第題第題為什么的和的中不能做異步操作解析第題第題京東下面代碼中在什么情況下會打印解析第題第題介紹下及其應用。盡量減少操作次數(shù)。解析第題第題京東快手周一算法題之兩數(shù)之和給定一個整數(shù)數(shù)組和一個目標值,找出數(shù)組中和為目標值的兩個數(shù)。 引言 半年時間,幾千人參與,精選大廠前端面試高頻 100 題,這就是「壹題」。 在 2019 年 1 月 21 日這天,「壹題」項目正式開始,在這之后每個工...
摘要:序列文章面試之函數(shù)面試之對象前言本文主要從應用來講數(shù)組的一些騷操作如一行代碼扁平化維數(shù)組數(shù)組去重求數(shù)組最大值數(shù)組求和排序?qū)ο蠛蛿?shù)組的轉(zhuǎn)化等上面這些應用場景你可以用一行代碼實現(xiàn)扁平化維數(shù)組終極篇是扁平數(shù)組的表示維度值為時維度為無限大開始篇實質(zhì) showImg(https://segmentfault.com/img/bVbpRMS?w=1858&h=1286); 序列文章 JS面試之函數(shù)...
摘要:專題系列共計篇,主要研究日常開發(fā)中一些功能點的實現(xiàn),比如防抖節(jié)流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數(shù)組合專題系列第十六篇,講解函數(shù)組合,并且使用柯里化和函數(shù)組合實現(xiàn)模式需求我們需要寫一個函數(shù),輸入,返回。 JavaScript 專題之從零實現(xiàn) jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現(xiàn)一個 jQuery 的 ext...
閱讀 3452·2023-04-26 01:45
閱讀 2227·2021-11-23 09:51
閱讀 3641·2021-10-18 13:29
閱讀 3437·2021-09-07 10:12
閱讀 702·2021-08-27 16:24
閱讀 1773·2019-08-30 15:44
閱讀 2198·2019-08-30 15:43
閱讀 2953·2019-08-30 13:11