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