扩展js对象数组的OrderByAsc和OrderByDesc方法

JavaScript013

扩展js对象数组的OrderByAsc和OrderByDesc方法,第1张

看了一段时间关于js原型的知识 js的扩展方法是基于原型的 如Array prototype XXXX就是给Array扩展XXX方法 然后数组都能使用这个方法了

在对象数组里面经常有根据属性来进行排序的 升序 降序的 于是自己就想写一个类似于C#里面的orderBy的方法 代码如下

代码如下:

Array prototype OrderByAsc = function (func) {

var m = {}

for (var i = i <this lengthi++) {

for (var k = k <this lengthk++) {

if (func(this[i]) <func(this[k])) {

m = this[k]

this[k] = this[i]

this[i] = m

}

}

}

return this

}

Array prototype OrderByDesc = function (func) {

var m = {}

for (var i = i <this lengthi++) {

for (var k = k <this lengthk++) {

if (func(this[i]) >func(this[k])) {

m = this[k]

this[k] = this[i]

this[i] = m

}

}

}

return this

}

调用的方法如下

代码如下:

var arr = [{ name: aaa grade: } { name: ccc grade: } { name: bbb grade: }]

var orderArr = arr OrderByDesc(function (a) {

return a grade

})

然后输出一下 看一下结果吧

代码如下:

for (var i = i <orderArr lengthi++) {

document write(orderArr[i] name)

lishixinzhi/Article/program/Java/JSP/201311/19823

需求是把json和orderBy这两个过滤器写到一个js语句当中,先进行或者最后以json的格式输出,再以age进行由小到大的排序,这样在一条js语句当中可以实现:

<script>

var modelOne=angular.module('myapp', [])

m1.controller('Aaa', ['$scope','$filter',function($scope,$filter){

var arr=[{"color":"zred","age":"60"},{"color":"cred","age":"40"},{"color":"dred","age":"90"},{"color":"bred","age":"20"},{"color":"ered","age":"80"}]

$scope.orderByarr=$filter("orderBy")(arr,"age")

}])

</script>

再上html部分

<body ng-app="myapp">

<div ng-controller="Aaa">

<pre>{{orderBy}}</pre>

</div>

</body>