js使用Array.prototype.sort()對(duì)數(shù)組對(duì)象排序的方法
本文實(shí)例講述了js使用Array.prototype.sort()對(duì)數(shù)組對(duì)象排序的方法。分享給大家供大家參考。具體分析如下:
在講對(duì)數(shù)組對(duì)象進(jìn)行排序時(shí),我們先來簡單的了解一下Array.prototype.sort()。sort方法接受一個(gè)參數(shù)——Function,function會(huì)提供兩個(gè)參數(shù),分別是兩個(gè)進(jìn)行比較的元素,如果元素是String類型則通過Unicode code進(jìn)行比較,如果是Number類型則比較值的大小。如果比較的函數(shù)中返回1則兩個(gè)元素交換位置,0和-1不交換位置。先看一個(gè)例子:
// 從小到大排序
arr.sort(function (a, b) {
return a > b ? 1 : -1;
});
// 得到的結(jié)果:[1, 2, 3, 5]
那么回到我們的主題,如果是對(duì)一個(gè)數(shù)組對(duì)象進(jìn)行排序,該怎么寫呢?其實(shí)原理和上面一樣,如:
{ a : 2, b : 3.2},
{ a : 3, b : 1.2},
{ a : 4, b : 2.2},
{ a : 6, b : 1.2},
{ a : 5, b : 3.2}
]
/// 從小到大按屬性b排序
arr.sort(function(x, y){
return x.b > y.b ? 1:-1;
});
x和y就是arr的一個(gè)元素,即一個(gè)對(duì)象,所以直接比較兩個(gè)對(duì)象的屬性即可。
上面的例子中,最小的元素中有重復(fù),如果需求是:先按b屬性從小到大排序,如果最小中有重復(fù)則再按a屬性排序,那應(yīng)該怎么寫呢?
在排序的時(shí)候,先按b屬性排序,如果x.b的大于y.b則將x移到y(tǒng)的右邊,如果x.b等于y.b則再通過x.a和y.a進(jìn)行比較,所以代碼如下:
if (x.b > y.b) {
return 1;
} else if (x.b === y.b) {
return x.a > y.a ? 1 : -1;
} else if (x.b < y.b) {
return -1;
}
})
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- Js數(shù)組排序函數(shù)sort()介紹
- js對(duì)數(shù)組中的數(shù)字從小到大排序?qū)崿F(xiàn)代碼
- Javascript數(shù)組的排序 sort()方法和reverse()方法
- JS數(shù)組排序技巧匯總(冒泡、sort、快速、希爾等排序)
- js中數(shù)組(Array)的排序(sort)注意事項(xiàng)說明
- js sort 二維數(shù)組排序的用法小結(jié)
- JavaScript中數(shù)組Array.sort()排序方法詳解
- JS實(shí)現(xiàn)根據(jù)數(shù)組對(duì)象的某一屬性排序操作示例
- JS實(shí)現(xiàn)json對(duì)象數(shù)組按對(duì)象屬性排序操作示例
- js實(shí)現(xiàn)嵌套數(shù)組重排序
相關(guān)文章
javascript實(shí)現(xiàn)日期時(shí)間動(dòng)態(tài)顯示示例代碼
這篇文章主要介紹了javascript實(shí)現(xiàn)日期時(shí)間動(dòng)態(tài)顯示示例代碼,頁面動(dòng)態(tài)顯示時(shí)間變化的方法有很多,本文為大家介紹下使用javascript的具體實(shí)現(xiàn),感興趣的朋友可以參考一下2015-09-09javascript bom是什么及bom和dom的區(qū)別
BOM是瀏覽器對(duì)象模型,DOM是文檔對(duì)象模型,前者是對(duì)瀏覽器本身進(jìn)行操作,而后者是對(duì)瀏覽器(可看成容器)內(nèi)的內(nèi)容進(jìn)行操作。這篇文章給大家介紹javascript bom是什么及bom和dom的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2015-11-11javascript實(shí)現(xiàn)checkbox復(fù)選框?qū)嵗a
這篇文章主要為大家介紹了javascript實(shí)現(xiàn)checkbox復(fù)選框?qū)嵗a,對(duì)checkbox復(fù)選框進(jìn)行美化,感興趣的小伙伴們可以參考一下2016-01-01每天一篇javascript學(xué)習(xí)小結(jié)(屬性定義方法)
這篇文章主要介紹了javascript中的屬性定義方法知識(shí)點(diǎn),對(duì)屬性定義方法的基本使用方法,以及各種方法進(jìn)行整理,感興趣的小伙伴們可以參考一下2015-11-11非主流的textarea自增長實(shí)現(xiàn)js代碼
今天稍微研究了下textarea隨輸入內(nèi)容自動(dòng)增長的功能,通過google參考了一些實(shí)現(xiàn)方式2011-12-12javaScript中with函數(shù)用法實(shí)例分析
這篇文章主要介紹了javaScript中with函數(shù)用法,實(shí)例分析了javascript中with的功能、定義及相關(guān)使用技巧,需要的朋友可以參考下2015-06-06JS實(shí)現(xiàn)選定指定HTML元素對(duì)象中指定文本內(nèi)容功能示例
這篇文章主要介紹了JS實(shí)現(xiàn)選定指定HTML元素對(duì)象中指定文本內(nèi)容功能,涉及javascript針對(duì)HTML頁面元素的運(yùn)算與選定相關(guān)操作技巧,需要的朋友可以參考下2017-02-02