在談到數組對象排序時,我們先簡單看壹下Array.prototype.sort()。sort方法接受壹個參數-函數,函數會提供兩個參數,這是兩個用於比較的元素。如果元素是字符串類型,它將通過Unicode傳遞。
代碼,如果是Number類型,則比較值的大小。如果compared函數返回1,則兩個元素交換位置,0和-1不交換位置。先看壹個例子:
復制代碼
代碼如下:var
arrive)
=
[3,
5,
2,
1];
//
從小到大排序
arr.sort(函數
(壹、
b)
{
返回
a
& gt
b
1
:
-1;
});
//
結果:【1,
2,
3,
5]
那麽回到我們的話題,如果我們對壹個數組對象進行排序,應該怎麽寫呢?實際上,原理和上面壹樣,比如:
復制代碼
代碼如下:var
arrive)
=
[
{
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(函數(x,
y){
返回
十. b
& gt
y.b
1:-1;
});
x和y是arr的壹個元素,也就是壹個對象,所以可以直接比較兩個對象的屬性。
在上面的例子中,最小的元素中有重復。如果要求是:先按B屬性從小到大排序,再按最小元素有重復的A屬性排序,應該怎麽寫?
排序時,先按B屬性排序。如果x.b大於y.b,則將X移到y的右邊,如果x.b等於y.b,則與Y.A .比較,所以代碼如下:
復制代碼
代碼如下:arr.sort(函數
(x,
y)
{
如果
(十. b
& gt
y.b)
{
返回
1;
}
其他
如果
(十. b
===
y.b)
{
返回
x.a
& gt
y.a
1
:
-1;
}
其他
如果
(十. b
& lt
y.b)
{
返回
-1;
}
})
希望這篇文章對妳的javascript程序設計有所幫助。