在最近的一個項目中使用到了js排序。在以前都是對單個屬性進行排序的,但是這次是要對一個對象的屬性進行排序。
在項目中我需要對傳回的距離進行升序。代碼如下
<code>for</code> <code>(</code><code>var</code> <code>k = 0,</code>
<code>l = data.length; k < l; k++) {</code>
<code> </code><code>//擷取距離</code>
<code> </code><code>var</code> <code>lat = data[k].lat;</code>
<code> </code><code>var</code> <code>lng = data[k].lng;</code>
<code> </code><code>var</code> <code>map = </code><code>new</code> <code>BMap.Map();</code>
<code> </code><code>//Memory.GetValue("Longitude")Memory.GetValue("Latitude");</code>
<code> </code><code>var</code> <code>pointB = </code><code>new</code> <code>BMap.Point(lat, lng);</code>
<code> </code><code>var</code> <code>distances = map.getDistance(pointA, pointB);</code>
<code> </code><code>if</code> <code>(distances == 0) {</code>
<code> </code><code>//datas = detailDatas.replace('@100',0);</code>
<code> </code><code>} </code><code>else</code> <code>{</code>
<code> </code><code>var</code> <code>_t = distances.toString().indexOf(</code><code>'.'</code><code>);</code>
<code> </code><code>_d = distances.toString().substring(0, _t);</code>
<code> </code><code>}</code>
<code> </code><code>data[k].distance = _d;</code>
<code>}</code>
<code>data.sort(</code><code>function</code><code>(o1, o2) {</code>
<code> </code><code>return</code> <code>o1.distance - o2.distance;</code>
<code>});</code>
我覺得我有必要對代碼進行說明:
我得到的資料是一個json的list,使用百度提供的接口對坐标之間的舉例進行排序。data[k].distance = _d;這行代碼是向js對象新增一個距離的屬性。
核心代碼:
是根據距離進行升序。如果需要降序可以改為:
<code> </code><code>return</code> <code>o2.distance - o1.distance;</code>
普通數組的的排序也是類似的,如下示例
<code>function</code> <code>compare(arg1,arg2){</code>
<code> </code><code>var</code> <code>tmp1=parseInt(arg1);</code>
<code> </code><code>var</code> <code>tmp2=parseInt(arg2);</code>
<code> </code><code>if</code><code>(tmp1<tmp2){</code>
<code> </code><code>return</code> <code>-1;</code>
<code> </code><code>}</code><code>else</code> <code>if</code><code>(tmp1==tmp2){</code>
<code> </code><code>return</code> <code>0;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>return</code> <code>1;</code>
<code>var</code> <code>arr=</code><code>new</code> <code>Array(1,3,11,22,54,9);</code>
<code>alert(arr.sort());</code>
<code>alert(arr.sort(compare));</code>
本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1302395