摘要:來,今天我來教大家一個(gè)騷操作。我利用的就是數(shù)組的索引來排序的,大家都知道,索引就是從開始,然后依次遞增的。技術(shù)總結(jié)這個(gè)就是巧用了數(shù)組的索引,默認(rèn)就是一個(gè)從小到大的排序的特性。
如果你想要對(duì)數(shù)組排序,可能會(huì)去百度去搜,于是有很多人教你用冒泡,什么二分插入排序、堆排序,如果不太懂其中的代碼意思,很難看明白。來,今天我來教大家一個(gè)騷操作。
我利用的就是JS數(shù)組的索引來排序的,大家都知道,索引就是從0開始,然后依次遞增的。好了,廢話少說,開始擼了。
我們來上完整的代碼:
var arr = [1,4,2,5,21,3,44,12];//要排序的數(shù)組。 var res = [];//要返回的排序后的數(shù)組。 var arr1 = [];//中間用到的過渡數(shù)組 arr.forEach(a=>{ arr1[a] = 1; }); arr1.forEach((r,index)=>{ if(r === 1){ res.push(index);//通過push默認(rèn)是是升序,如果想降序可以采用unshift方法,或者在最后將數(shù)組反轉(zhuǎn)一下即可。 } }) console.log(res);
arr.forEach(a=>{
//這一步很關(guān)鍵,我們把要排序的數(shù)組的每一項(xiàng)當(dāng)作了中間過渡數(shù)組的索引,并賦值為1(這里不一定要是1,給一個(gè)特定的值就行)
arr1[a] = 1;
});
這時(shí)候arr1 的結(jié)果為: [empty, 1, 1, 1, 1, empty × 7, 1, empty × 8, 1, empty × 22, 1, empty × 10, 1]
這時(shí)候中間過渡數(shù)組arr1就有數(shù)據(jù)了,但是這個(gè)數(shù)組中有很多undefined,這時(shí)候我們?cè)僮鲎詈蟮呐懦秃昧恕?/p>
寫在最后:有人可能會(huì)提出來,如果數(shù)組中有重復(fù)項(xiàng),那這種排序是不是不行了,當(dāng)然可以, 做下處理,把重復(fù)的先拿到,重復(fù)了幾次,然后在最后的結(jié)果數(shù)組中通過splice(index,0,item);對(duì)數(shù)組進(jìn)行插入操作即可。
技術(shù)總結(jié):
這個(gè)就是巧用了數(shù)組的索引,默認(rèn)就是一個(gè)從小到大的排序的特性。這種方法簡(jiǎn)單易懂。
數(shù)組的基本方法的使用,像forEach push unshift reverse splice(這個(gè)splice可以做刪除,插入,修改) 等。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104177.html
摘要:序列文章面試之函數(shù)面試之對(duì)象前言本文主要從應(yīng)用來講數(shù)組的一些騷操作如一行代碼扁平化維數(shù)組數(shù)組去重求數(shù)組最大值數(shù)組求和排序?qū)ο蠛蛿?shù)組的轉(zhuǎn)化等上面這些應(yīng)用場(chǎng)景你可以用一行代碼實(shí)現(xiàn)扁平化維數(shù)組終極篇是扁平數(shù)組的表示維度值為時(shí)維度為無限大開始篇實(shí)質(zhì) showImg(https://segmentfault.com/img/bVbpRMS?w=1858&h=1286); 序列文章 JS面試之函數(shù)...
摘要:讓我們快速的復(fù)習(xí)一下在中一共有兩種類型的值原始值和對(duì)象值原始值有布爾值數(shù)字還有字符串其他的所有值都是對(duì)象類型的值包括數(shù)組和函數(shù)類型轉(zhuǎn)化先按運(yùn)算符來分一下類減號(hào),乘號(hào),肯定是進(jìn)行數(shù)學(xué)運(yùn)算,所以操作數(shù)需轉(zhuǎn)化為類型。 前言 很多小伙伴們覺得javaScript很簡(jiǎn)單,下面的這行 javaScript代碼可能會(huì)讓你懷疑人生。 (!(~+[])+{})[--[~+][+[]]*[~+[]] +...
摘要:快速排序是一種劃分交換排序??焖倥判蚧诿芭葸f歸分治。他在大數(shù)據(jù)情況下是最快的排序算法之一,平均事件復(fù)雜度很低而且前面的系數(shù)很小,在大量隨機(jī)輸入的情況下最壞情況出現(xiàn)的概率是極小的。 快速排序是一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法。 分治法的基本思想是:將原問題分解為若干個(gè)規(guī)模更小但結(jié)構(gòu)與原問題相似的子問題。遞歸地解這些子問題,然后將這些子問題的解組合為原問題的解。...
摘要:插入排序是穩(wěn)定的算法。所以準(zhǔn)確的說,當(dāng)數(shù)組長度大于的時(shí)候,采用了快速排序和插入排序的混合排序方法。在對(duì)數(shù)組進(jìn)行了一次快速排序后,然后對(duì)兩個(gè)子集分別進(jìn)行了插入排序,最終修改數(shù)組為正確排序后的數(shù)組。 JavaScript 專題系列第二十篇,也是最后一篇,解讀 v8 排序源碼 前言 v8 是 Chrome 的 JavaScript 引擎,其中關(guān)于數(shù)組的排序完全采用了 JavaScript 實(shí)...
摘要:函數(shù)的因?yàn)橐矒碛袑傩?,所以其被稱為類數(shù)組對(duì)象。方法數(shù)組的拼接,,指被拼接的對(duì)象數(shù)組,為數(shù)組。如果為負(fù),則將其視為,其中為數(shù)組的長度。而提供了數(shù)組反轉(zhuǎn)和排序來對(duì)數(shù)組進(jìn)行重排序。用好原生,你的代碼將顯得干凈,有趣。 前言 最近工作做數(shù)據(jù)交互展示,常和數(shù)據(jù)打交道,而隨之而來的就是遇見后端傳來的各種各樣的數(shù)組,我需要用各式各樣的方法來變換這些數(shù)據(jù),來最好的展示這些數(shù)據(jù);很多東西久了沒用就容易忘...
閱讀 2799·2021-09-01 10:30
閱讀 1689·2019-08-30 15:52
閱讀 978·2019-08-29 18:40
閱讀 1134·2019-08-28 18:30
閱讀 2405·2019-08-23 17:19
閱讀 1333·2019-08-23 16:25
閱讀 2710·2019-08-23 16:18
閱讀 2987·2019-08-23 13:53