① js使用Array.prototype.sort()對數組對象排序的方法
本文實例講述了js使用Array.prototype.sort()對數組對象排序的方法。分享給大家供大家參考。具體分析如下:
在講對數組對象進行排序時,我們先來簡單的了解一下Array.prototype.sort()。sort方法接受一個參數——Function,function會提供兩個參數,分別是兩個進行比較的元素,如果元素是String類型則通過Unicode
code進行比較,如果是Number類型則比較值的大小。如果比較的函數中返回1則兩個元素交換位置,0和-1不交換位置。先看一個例子:
復制代碼
代碼如下:var
arr
=
[3,
5,
2,
1];
//
從小到大排序
arr.sort(function
(a,
b)
{
return
a
>
b
?
1
:
-1;
});
//
得到的結果:[1,
2,
3,
5]
那麼回到我們的主題,如果是對一個數組對象進行排序,該怎麼寫呢?其實原理和上面一樣,如:
復制代碼
代碼如下:var
arr
=
[
{
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的一個元素,即一個對象,所以直接比較兩個對象的屬性即可。
上面的例子中,最小的元素中有重復,如果需求是:先按b屬性從小到大排序,如果最小中有重復則再按a屬性排序,那應該怎麼寫呢?
在排序的時候,先按b屬性排序,如果x.b的大於y.b則將x移到y的右邊,如果x.b等於y.b則再通過x.a和y.a進行比較,所以代碼如下:
復制代碼
代碼如下:arr.sort(function
(x,
y)
{
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;
}
})
希望本文所述對大家的javascript程序設計有所幫助。
② 用JS代碼實現給定一個數組,[1,2,3,4,5,6,7,8,9],分別求它們的立方。
var arr1 = [1,2,3,4,5,6,7,8,9];
var arr = arr1.map(function(item,index,array){
return item*item*item;
})
返回的新數組arr則是元素立方運算後的新數組
③ js數組排序的幾種方法
一、 冒泡排序
平均復雜度:o(n^2) 空間復雜度:o(1) 穩定性:穩定
步驟: 1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個;
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣,最後的元素應該會是最大的數;
3、針對所有的元素重復以上的步驟,除了最後一個;
4、持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
二、選擇排序
平均復雜度:o(n^2) 空間復雜度:o(1) 穩定性:不穩定
步驟: 1、每一次循環,找到最小的那個數,並用變數記住它的索引
2、然後將最小值放在它該在的位置上
3、持續對越來越少的元素重復上面的步驟
三、插入排序
平均復雜度:o(n^2) 空間復雜度:o(1) 穩定性:穩定
(1)直接插入排序:將第一個數和第二個數排序,然後構成一個有序序列;將第三個數插入進去,構成一個新的有序序列;對第四個數、第五個數......直到最後一個數,重復第二步
(2)二分插入排序:將尋找每個數插入位置的方法改為折半比較即可
四、Shell排序(插入排序的一種,又稱為縮小增量排序)
平均復雜度:o(nlogn) 空間復雜度:o(1) 穩定性:不穩定
步驟:把數組按下標的一定增量分組,然後對每組使用直接插入排序
想學習更多前端開發的知識,就來北京尚學堂!
④ Js中的數組sort()排序問題
比較函數的參數 v1 和 v2 代表數組里的兩個元素
如果 v1 小於 v2,排序後的數組 v1 在 v2 前面,此時返回一個內負數 (即上面的 return -1)容
如果 v1 等於 v2,排序後兩者位置不變,此時返回 0(即上面的 return 0)
如果 v1 大於 v2,排序後 v1 在v2 後面, 返回一個正數(即上面的 return 1)
//比較函數一般簡寫成:
arr.sort(function(a,b){
returna-b//升序
});
arr.sort(function(a,b){
returnb-a//降序
});
//對應上面的解釋好好想下,不難理解為什麼這樣寫