天天看點

javascript對象屬性排序

 在最近的一個項目中使用到了js排序。在以前都是對單個屬性進行排序的,但是這次是要對一個對象的屬性進行排序。

 在項目中我需要對傳回的距離進行升序。代碼如下

<code>for</code> <code>(</code><code>var</code> <code>k = 0,</code>

<code>l = data.length; k &lt; 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&lt;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

繼續閱讀