js中如何對(duì)json數(shù)組進(jìn)行排序
更新時(shí)間:2023年04月17日 10:11:14 作者:spring-java
這篇文章主要介紹了js中如何對(duì)json數(shù)組進(jìn)行排序的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
js對(duì)json數(shù)組進(jìn)行排序
廢話(huà)不多說(shuō),直接上代碼
// 升序排列
function up(a, b) {
? ? ?return a.val-b.val
?},
?// 降序排列
function down(a, b) {
? ? return b.val-a.val
},
// sort 會(huì)直接對(duì)原數(shù)據(jù)排序
testJson.sort(up)例如:
let test=[{"val":100},{"val":70},{"val":50},{"val":20},{"val":10}]
test=test.sort(up)js根據(jù)json數(shù)組多個(gè)字段排序
let newArray = [
? ? ? {product: "1", matno: "420200011480006",salebillno:"xsdd2733-8", sales: "800"},
? ? ? {product: "2", matno: "420200011480007",salebillno:"xsdd2733-2", sales: "300"},
? ? ? {product: "3", matno: "420200011480006",salebillno:"xsdd2733-5", sales: "100"},
? ? ? {product: "4", matno: "420200011480006",salebillno:"xsdd2733-3", sales: "200"},
? ? ? {product: "5", matno: "420200011480008",salebillno:"xsdd2738", sales: "600"},
? ? ? {product: "6", matno: "420200011480010",salebillno:"xsdd2734", sales: "400"},
? ? ? {product: "7", matno: "420200011480009",salebillno:"xsdd2735", sales: "700"},
? ? ? {product: "8", matno: "420200011480001",salebillno:"xsdd2737", sales: "500"}
? ? ?]
?? ??
?
/**數(shù)組根據(jù)數(shù)組對(duì)象中的某個(gè)屬性值進(jìn)行排序的方法?
? * 使用例子:newArray.sort(sortByArr(['matno'],true)) //表示根據(jù)matno屬性降序排列;若第二個(gè)參數(shù)不傳遞,默認(rèn)表示升序排序
? * @param attr 排序的屬性 ['matno','salebillno'...],根據(jù)一個(gè)字段或者多個(gè)字段排序
? * @param rev true表示升序排列,false降序排序
? * */
?
function sortByArr(arr, rev) {
?if (rev == undefined) {
?rev = 1;
?} else {
?rev = (rev) ? 1 : -1;
?}
?return function(a, b) {
?for (var i = 0; i < arr.length; i++) {
?let attr = arr[i]
?if (a[attr] != b[attr]) {
?if (a[attr] > b[attr]) {
?return rev * 1;
?} else {
?return rev * -1;
?}
?}
?}
}
}
/**升序**/
?newArray.sort(sortByArr(['matno','salebillno'],true))
[{product: '8', matno: '420200011480001', salebillno: 'xsdd2737', sales: '500'}
?{product: '4', matno: '420200011480006', salebillno: 'xsdd2733-3', sales: '200'}
?{product: '3', matno: '420200011480006', salebillno: 'xsdd2733-5', sales: '100'}
?{product: '1', matno: '420200011480006', salebillno: 'xsdd2733-8', sales: '800'}
?{product: '2', matno: '420200011480007', salebillno: 'xsdd2733-2', sales: '300'}
?{product: '5', matno: '420200011480008', salebillno: 'xsdd2738', sales: '600'}
?{product: '7', matno: '420200011480009', salebillno: 'xsdd2735', sales: '700'}
?{product: '6', matno: '420200011480010', salebillno: 'xsdd2734', sales: '400'}]
/**降序**/
newArray.sort(sortByArr(['matno'],false))
// 輸出
[{product: '6', matno: '420200011480010', salebillno: 'xsdd2734', sales: '400'}
?{product: '7', matno: '420200011480009', salebillno: 'xsdd2735', sales: '700'}
?{product: '5', matno: '420200011480008', salebillno: 'xsdd2738', sales: '600'}
?{product: '2', matno: '420200011480007', salebillno: 'xsdd2733-2', sales: '300'}
?{product: '1', matno: '420200011480006', salebillno: 'xsdd2733-8', sales: '800'}
?{product: '3', matno: '420200011480006', salebillno: 'xsdd2733-5', sales: '100'}
?{product: '4', matno: '420200011480006', salebillno: 'xsdd2733-3', sales: '200'}
?{product: '8', matno: '420200011480001', salebillno: 'xsdd2737', sales: '500'}]總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中的宏任務(wù)和微任務(wù)執(zhí)行順序
在?JavaScript?中,宏任務(wù)和微任務(wù)是指在執(zhí)行代碼的過(guò)程中的兩種不同的任務(wù)類(lèi)型,這篇文章主要介紹了JavaScript中的宏任務(wù)和微任務(wù)執(zhí)行順序,需要的朋友可以參考下2022-12-12
JAVASCRIPT下判斷IE與FF的比較簡(jiǎn)單的方式
在JAVASCRIPT當(dāng)中可以通過(guò)取當(dāng)前瀏覽器返回值來(lái)判斷當(dāng)前使用什么瀏覽器。2008-10-10
webpack中Loader和Plugin的區(qū)別小結(jié)
本文主要介紹了webpack中Loader和Plugin的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06

