天天看点

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

继续阅读