资讯专栏INFORMATION COLUMN

JS中Array物件sort函數之理解

zhangfaliang / 1074人阅读

摘要:中物件函數之理解從網頁開發者技術文件說明中知道方法會原地對一個陣列的所有元素進行排序,並回傳此陣列。在文件中,說明方法可以直接使用帶入數值來做比較,達到數值陣列排序。有興趣的人可以參考上的的陣列,另外想要理解什麼是的人,請參考其作法。

JS中Array物件sort函數之理解

從網頁開發者技術文件說明中知道

sort() 方法會原地(in place)對一個陣列的所有元素進行排序,並回傳此陣列。排序不一定是穩定的(stable)。預設的排序順序是根據字串的 Unicode 編碼位置(code points)而定

在文件中,說明sort方法可以直接使用callback function帶入數值來做比較,達到數值陣列排序。我們來看下面的程式碼

var numbers = [1, 100, 10, 2, 200, 20];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

但是function(a, b)方法是利用什麼原理來達成數值陣列排序的呢?

原因出在Sort這個方法是由Javascript Engine所提供的sort。以瀏覽器Google Chrome (V8)為例,Sort方法是使用InsertionSort跟QuickSort實做出來的。當陣列長度小於等於10,就以InsertionSort來做排序。如果以上述的例子來追蹤一下,不難發現其排序過程就是InsertionSort。有興趣的人可以參考Github上的V8 JavaScript的陣列array.js,另外想要理解什麼是InsertionSort的人,請參考其作法。

var numbers = [1, 100, 10, 2, 200, 20];
numbers.sort(function(a, b) {
  console.log(numbers);
  console.log("a=" + a + " b= " + b)
  return a - b;
});
console.log(numbers);

程式碼結果

最後這個過程,終於解開我心中的疑問。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95118.html

相关文章

  • [譯] 透過重新實作來學習參透閉包

    摘要:不過到底是怎麼保留的另外為什麼一個閉包可以一直使用區域變數,即便這些變數在該內已經不存在了為了解開閉包的神秘面紗,我們將要假裝沒有閉包這東西而且也不能夠用嵌套來重新實作閉包。 原文出處: 連結 話說網路上有很多文章在探討閉包(Closures)時大多都是簡單的帶過。大多的都將閉包的定義濃縮成一句簡單的解釋,那就是一個閉包是一個函數能夠保留其建立時的執行環境。不過到底是怎麼保留的? 另外...

    CoXie 评论0 收藏0
  • 重讀 Axel 的 Javascript 的 Expression vs Statement 一文

    摘要:主要是因為它們會因為不同的位置產生不同的行為。函數宣告則產生一個行為,即建立一個變數,然後它的值是一個。而且只有可以被立即調用,函數宣告不行。為了防止產生疑義。會禁止使用或開頭。屬於一種,其產生一個值或說回傳一個值,並完成某項任務。 前言 原文在此,對於 Axel 的文章一直有種雖然短卻難以讀透的感覺。這篇文章是再讀一次的筆記與部份翻譯,如有錯誤歡迎指教。 註: 下面一些範例當我們在瀏...

    马龙驹 评论0 收藏0
  • 關於 Javascript {} + {}

    摘要:於是其他的東西相加的時候將會被轉型成數字或者字串。整個過程即先依據轉換為原始型別,這裡要注意並不是最終結果,再來依據需要看是否要再將原生型別轉成數字或字串。這個結果等於只作的算。 這篇文章源自 What is {} + {} in JavaScript? 其實早在 2012 年就問世了。時至 2016 年末純粹是在聊天時重提這個問題,但由於年紀大了記憶力不佳,竟然記錯了,所以才會有這一...

    charles_paul 评论0 收藏0
  • [譯 + 更新] 參透 Node exports 的 7 種設計模式

    摘要:現在,我們可以開始探討介面的設計模式了。匯出命名空間一個簡單且常用的設計模式就是匯出一個包含數個屬性的物件,這些屬性具體的內容主要是函式,但並不限於函式。如此,我們就能夠透過匯入該模組來取得這個命名空間下一系列相關的功能。 前言 這篇文章試著要整理,翻譯Export This: Interface Design Patterns for Node.js Modules這篇非常值得一讀的...

    wmui 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<