摘要:比較函數應該具有兩個參數和,其返回值如下若小于,在排序后的數組中應該出現在之前,則返回一個小于的值。總結下升序排列,返回值可以簡寫為降序排序,返回值可以簡寫為
遇到一個奇葩問題,數組排序在chrome瀏覽器下沒有問題,而在IE下不生效。查了下資料,原來是寫法有誤。
原來寫法:
var arr = [300, 20, 10, 1, 2]; arr.sort(function(a, b){ return a > b; });
期望返回值是[300, 20, 10, 2, 1](chrome下),結果是[300, 20, 10, 1, 2](IE下)
比較函數的返回值應該是數字(正數降序,負數升序,0不動),而我寫成了bool,導致排序失敗。chrome下可能做過兼容處理。
最蛋疼的是,在我寫這篇文章時,新版本chrome恢復了,與IE效果成了一樣的,而本地nodejs運行的版本(v10.0.0)仍是舊的。
比較函數如果不傳,則默認按照字符編碼的順序升序排列。
如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:
若 a 小于 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小于 0 的值。
若 a 等于 b,則返回 0。
若 a 大于 b,則返回一個大于 0 的值。
經過測試
比較函數的返回結果如果不是數字(Boolean或者NaN或者String或者Object),都不會排序。
總結下:
升序排列,返回值可以簡寫為:a-b
降序排序,返回值可以簡寫為:b-a
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101473.html
摘要:前提給定一個二維數組,請根據指定的數組寫出最優的排序。排序條件,指定數組如下估計大家都沒有什么問題,排序嘛,簡單的不要不要的方式一這應該是最簡單的方式了,直接使用現成的函數,快捷的不要不要的。 前提 給定一個二維數組,請根據指定的數組key,寫出最優的排序。排序條件age asc,sex desc,指定數組如下: $arr = [ [id=>1, age=>1,...
摘要:下列的所有排序函數都是直接作用于數組本身,而不是返回一個新的有序的數組。倒序并保持索引關系,按鍵名排序按鍵名倒序使用用戶自定義的比較函數對數組中的值進行排序,要排序的數組需要用一種不尋常的標準進行排序,那么應該使用此函數。 數組排序,共13個 函數中有u的,能自定義比較函數;有k的,按照鍵來排序;有r(reverse)的,倒序;有a(association)的,一定是鍵值關聯,除了r...
摘要:以上涉及到一個字符的轉換問題,這里不多擴展,寫一段代碼運行過程做筆記中國代表字符中的第一位,是只有長度的字符輸出字符長度為不確定時放入一個數組中。第一次運行后,返回值為,小于,所以的索引值未變化,。 Array.sort() 方法排序,默認為升序排序,如 1,2,3,4 這樣的排列,可以傳一個對比方法做為排序的參數,也可以不傳,則為按照字符的逐個 unicode 排序。 簡單默認排序 ...
摘要:下面重新改寫上面的冒泡排序,傳遞一個回調函數。模擬注意第行和第行,給傳遞了一個參數,這是一個函數,然后在第行調用,和分別就是回調函數的兩個比較值。 在JavaScript中,Array對象的sort()方法是用來排序的,但是這個方法在默認情況下可能不是我們想要的,比如對于如下數組 var arr = [2,5,10,20,7,15]; 使用sort排序會得到如下結果:[10, 15, ...
摘要:數組按其中一個字段排序數組個字段排序,先按第一個字段排序,再按第二個字段排序擴展方法最多支持對數組個字段排序,當然可以擴充的自定義方法重載實現對多維數字的排序。 1. PHP數組Array按其中一個字段排序 /** * Sort array by filed and type, common utility method. * @param array $data * @param s...
摘要:在算法中,比快速排序還快的,無疑是基數排序,粗略看了一下算法,可能是基礎排序中的桶排序。桶排序是穩定的桶排序是常見排序里最快的一種,比快排還要快大多數情況下桶排序非常快,但是同時也非常耗空間以空間換時間 ext/standard/php_array.h https://github.com/php/php-src/blob/master/ext/standard/php_array....
閱讀 3233·2021-11-22 12:07
閱讀 1876·2021-10-12 10:11
閱讀 1041·2019-08-30 15:44
閱讀 2935·2019-08-30 12:45
閱讀 2184·2019-08-29 16:41
閱讀 1636·2019-08-29 16:35
閱讀 2620·2019-08-29 12:57
閱讀 1147·2019-08-26 13:51