JS實現自定義排序

2022-06-01 14:18:07 字數 3619 閱讀 7195

定義:用本地特定的順序來比較兩個字串。

語法:stringobject.localecompare(target)

引數:target——要以本地特定的順序與 stringobject 進行比較的字串。

返回值:說明比較結果的數字。

(1)如果 stringobject 小於 target,則 localecompare() 返回小於 0 的數。

(2)如果 stringobject 大於 target,則該方法返回大於 0 的數。

(3)如果兩個字串相等,或根據本地排序規則沒有區別,該方法返回 0。

說明:把 < 和 > 運算子應用到字串時,它們只用字元的 unicode 編碼比較字串,而不考慮當地的排序規則。以這種方法生成的順序不一定是正確的。localecompare() 方法提供的比較字串的方法,考慮了預設的本地排序規則。ecmascript 標準並沒有規定如何進行本地特定的比較操作,它只規定該函式採用底層作業系統提供的排序規則。

例項:1、可以使用localecompare() 方法來實現中文按照拼音排序,方法相當簡單

var array = ['

白鴿', '

麻雀', '

大象', '

狗', '

貓', "雞"

];array =array.sort(function comparefunction(item1, item2) );

//["白鴿", "大象", "狗", "雞", "麻雀", "貓"]

而且可以通過如下**實現中文按照拼音排序,並且可以將中文按照a,b,c,d……進行區分。**如下:

function pysegsort(arr,empty) ;

$.each(arr, function()

});if(empty ||curr.data.length) );

}});

return

segs;

}console.log(json.stringify(pysegsort(['白鴿

', '

麻雀','

黑','

大象', '

狗', '

貓','

媽媽','

馬', "

雞",'

瘦','

胖'])));

結果顯示為:[,,,,,,,];通過這個就可以寫乙個**薄,像現在手機上面的,通過人名來進行分組、排序,之後再通過迴圈和布局就可以實現**薄的功能。

2、實現字母、數字的混合排序:

var d = [1,2,3,'

a','

k','

b','

d',10,20,'c'

] d.sort(function(a,b))

console.log(d);

//[1, 2, 3, 10, 20, "a", "b", "c", "d", "k"]

isfinite() 判斷a、b是否是數字。

return 後面的語句:

c != d && c - d  如果c和d不相等 ,也就是說比較的值不是同一型別。那就比較 c-d的值是1還是-1(中間進行了隱式型別轉換)

如果c == d 也就是說c、d是同一型別的值,c、d可能都是字母,也可能都是數字。這裡就可以直接比較大小了(都是字母的話不能直接做減法)。

isfinite() 函式用於檢查其引數是否是無窮大。如果 number 是有限數字(或可轉換為有限數字),那麼返回 true。否則,如果 number 是 nan(非數字),或者是正、負無窮大的數,則返回 false。

定義:用本地特定的順序來比較兩個字串。

語法:stringobject.localecompare(target)

引數:target——要以本地特定的順序與 stringobject 進行比較的字串。

返回值:說明比較結果的數字。

(1)如果 stringobject 小於 target,則 localecompare() 返回小於 0 的數。

(2)如果 stringobject 大於 target,則該方法返回大於 0 的數。

(3)如果兩個字串相等,或根據本地排序規則沒有區別,該方法返回 0。

說明:把 < 和 > 運算子應用到字串時,它們只用字元的 unicode 編碼比較字串,而不考慮當地的排序規則。以這種方法生成的順序不一定是正確的。localecompare() 方法提供的比較字串的方法,考慮了預設的本地排序規則。ecmascript 標準並沒有規定如何進行本地特定的比較操作,它只規定該函式採用底層作業系統提供的排序規則。

例項:1、可以使用localecompare() 方法來實現中文按照拼音排序,方法相當簡單

var array = ['

白鴿', '

麻雀', '

大象', '

狗', '

貓', "雞"

];array =array.sort(function comparefunction(item1, item2) );

//["白鴿", "大象", "狗", "雞", "麻雀", "貓"]

而且可以通過如下**實現中文按照拼音排序,並且可以將中文按照a,b,c,d……進行區分。**如下:

function pysegsort(arr,empty) ;

$.each(arr, function()

});if(empty ||curr.data.length) );

}});

return

segs;

}console.log(json.stringify(pysegsort(['白鴿

', '

麻雀','

黑','

大象', '

狗', '

貓','

媽媽','

馬', "

雞",'

瘦','

胖'])));

結果顯示為:[,,,,,,,];通過這個就可以寫乙個**薄,像現在手機上面的,通過人名來進行分組、排序,之後再通過迴圈和布局就可以實現**薄的功能。

2、實現字母、數字的混合排序:

var d = [1,2,3,'

a','

k','

b','

d',10,20,'c'

] d.sort(function(a,b))

console.log(d);

//[1, 2, 3, 10, 20, "a", "b", "c", "d", "k"]

isfinite() 判斷a、b是否是數字。

return 後面的語句:

c != d && c - d  如果c和d不相等 ,也就是說比較的值不是同一型別。那就比較 c-d的值是1還是-1(中間進行了隱式型別轉換)

如果c == d 也就是說c、d是同一型別的值,c、d可能都是字母,也可能都是數字。這裡就可以直接比較大小了(都是字母的話不能直接做減法)。

isfinite() 函式用於檢查其引數是否是無窮大。如果 number 是有限數字(或可轉換為有限數字),那麼返回 true。否則,如果 number 是 nan(非數字),或者是正、負無窮大的數,則返回 false。

js實現自定義彈窗

click me 樣式部分 也放出來供參考,樣式可以根據自己的設計圖自行更改即可 彈出框最外層 msg wrap 彈出框頭部 msg wrap msg header msg wrap msg header msg header close button 彈出框中部 msg wrap msg body...

sql實現自定義排序

實際應用中sql提供的預設按某一欄位排序,asc desc並不滿足需要,需要根據使用者需求自定義的按照默寫順序排序,這裡提供乙個方法,適用於自定義型別不多的情況下,多了就得存欄位關聯表排序了吧。例子如下 select from select 3 as id,小明 as name from dual ...

ArrayList實現自定義排序

arraylist中存在sort排序方法,只要你實現了comparator的介面,按照你自己的排序業務進行實現,你只要告訴這個介面按照什麼型別進行排序就ok了。這種方式類似於設計模式中的策略模式,把流程劃分好,具體的業務邏輯由使用者指定 實現 public class comparatortest ...