한동안 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 초보자입니다. 아이디어, 직접 메시지를 남겨서 서로 소통해보세요.