>웹 프론트엔드 >JS 튜토리얼 >js 객체 array_javascript 기술의 OrderByAsc 및 OrderByDesc 메소드 확장을 위한 구현 아이디어

js 객체 array_javascript 기술의 OrderByAsc 및 OrderByDesc 메소드 확장을 위한 구현 아이디어

WBOY
WBOY원래의
2016-05-16 17:33:311553검색

한동안 js 프로토타입에 대해 읽은 후 js의 확장 메소드가 프로토타입을 기반으로 한다는 것을 알았습니다. 예를 들어 Array.prototype.XXXX는 XXX 메소드를 Array로 확장하면 모든 배열에서 이 메소드를 사용할 수 있습니다.

객체 배열은 속성에 따라 오름차순, 내림차순으로 정렬되는 경우가 많기 때문에 C#의 orderBy와 유사한 메서드를 작성하고 싶었습니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

Array.prototype.OrderByAsc = function (func) {
var m = { };
for (var i = 0; i for (var k = 0; k if (func(this [i ]) < func(this[k])) {
m = this[k]
this[k] = this[i]
}
}
}
return this;
}
Array.prototype.OrderByDesc = function (func) {
var m =
for (var i = 0 ; i < this.length; i ) {
for (var k = 0; k < this.length; k ) {
if (func(this[i]) > func(this [k ])) {
m = this[k];
this[k] = this[i]
this[i] = m
}
}
return this;
}


호출되는 메소드는 다음과 같습니다.


var arr = [{ name: 'aaa', grade: 20 }, { name: 'ccc', grade: 30 }, { name: 'bbb' , grade: 40 } ];
var orderArr = arr.OrderByDesc(function (a) {
return a.grade;
})


출력하고 확인하세요. 결과:


for (var i = 0 ; i < orderArr.length ; i ) {
document.write(orderArr[i].name)
}


저는 js 초보자입니다. 아이디어, 직접 메시지를 남겨서 서로 소통해보세요.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.