摘要:題目已知如下數組編寫一個程序將數組扁平化去并除其中重復部分數據,最終得到一個升序且不重復的數組實現數組扁平化去重排序解析數組扁平化判斷數組子元素是否為數組是的話進行遞歸否則把子元素變為數組的執行結果為的執行結果為數組去重通過實現
題目:
已知如下數組:
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
編寫一個程序將數組扁平化去并除其中重復部分數據,最終得到一個升序且不重復的數組
實現:
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]; //數組扁平化 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));
解析:
數組扁平化,判斷數組子元素是否為數組,是的話進行遞歸,否則把子元素變為數組
this.map(item => (Array.isArray(item) ? item.flat() : [item]))的執行結果為
[[[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])))的執行結果為
[].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]
數組去重, 通過Set實現
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]
數組升序排序,通過sort實現,若a - b > 0,返回true,a與b更換位置
最后結果為
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105531.html
摘要:已知如下數組編寫一個程序將數組扁平化去并除其中重復部分數據,最終得到一個升序且不重復的數組參考上大佬的方法一步到位。自己的多重函數法首先定義一個函數,實現數組的扁平化當數據都扁平化了,那么繼續常規操作。 已知如下數組:var arr = [[1,2,2],[3, 4, 5, 5],[6, 7, 8, 9,[11,12,[12,13,[14,15,66,12]]]],10];編寫一個程序...
摘要:引言本期開始介紹中的高階函數,在中,函數是一種特殊類型的對象,它們是。簡單來說,高階函數是一個接收函數作為參數傳遞或者將函數作為返回值輸出的函數。我們來看看使用它們與不使用高階函數的方案對比。引言 本期開始介紹 JavaScript 中的高階函數,在 JavaScript 中,函數是一種特殊類型的對象,它們是 Function objects。那什么是高階函數呢?本節將通過高階函數的定義來展...
摘要:解析第題第題為什么的和的中不能做異步操作解析第題第題京東下面代碼中在什么情況下會打印解析第題第題介紹下及其應用。盡量減少操作次數。解析第題第題京東快手周一算法題之兩數之和給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 引言 半年時間,幾千人參與,精選大廠前端面試高頻 100 題,這就是「壹題」。 在 2019 年 1 月 21 日這天,「壹題」項目正式開始,在這之后每個工...
摘要:序列文章面試之函數面試之對象前言本文主要從應用來講數組的一些騷操作如一行代碼扁平化維數組數組去重求數組最大值數組求和排序對象和數組的轉化等上面這些應用場景你可以用一行代碼實現扁平化維數組終極篇是扁平數組的表示維度值為時維度為無限大開始篇實質 showImg(https://segmentfault.com/img/bVbpRMS?w=1858&h=1286); 序列文章 JS面試之函數...
摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...
閱讀 3458·2023-04-26 01:45
閱讀 2248·2021-11-23 09:51
閱讀 3650·2021-10-18 13:29
閱讀 3447·2021-09-07 10:12
閱讀 710·2021-08-27 16:24
閱讀 1782·2019-08-30 15:44
閱讀 2203·2019-08-30 15:43
閱讀 2961·2019-08-30 13:11