Angular js 구현 sort 방법
4184 단어 B-JavaScript
기본 정렬 순 서 는 문자열 유 니 코드 코드 에 따 른 것 입 니 다.정렬 은 문자열 유 니 코드 코드 순서에 따라 정렬 되 기 때문에 먼저 배열 요 소 를 문자열 (필요 하 다 면) 로 바 꾸 어 비교 해 야 합 니 다.
문법: arrayObject. sort (sortby);
파라미터 sortby 정렬 순 서 를 정 하 는 데 사용 할 수 있 지만 함수 여야 합 니 다.
메모: 배열 은 원래 배열 에서 정렬 되 며 복사 본 이 생 성 되 지 않 습 니 다.
예 1: 알파벳 순 으로 정렬
const arr = ['tom', 'ben', 'lina', 'haiqi'];
console.log(arr.sort());
// ["ben", "haiqi", "lina", "tom"] 예 2: 알파벳 에 따라 정렬 합 니까?
const arr = ['22', '201', '13', '1000'];
console.log(arr.sort());
// ["1000", "13", "201", "22"] 출력 결 과 는 생각 했 던 것 과 다 를 수 있 지만 유 니 코드 문자 가 집 중 된 순서대로 정렬 되 어 있 습 니 다.
다른 기준 에 따라 정렬 하려 면 비교 함 수 를 제공 해 야 한다.
예 3: 오름차 순 정렬
sortBy(a: any, b: any): number {
return a - b;
}
const arr = ['22', '201', '13', '1000'];
console.log(arr.sort(this.sortBy));
// ["13", "22", "201", "1000"] 해석: 정렬 사상 은 거품 정렬 사상 과 유사 해 야 한다.
a 가 b 보다 작 으 면 a - b 가 0 보다 작 으 면 0 보다 작은 값 을 되 돌려 줍 니 다. 배열 은 오름차 순 으로 배열 합 니 다. 즉, a 는 b 의 앞 에 배열 합 니 다.
a 가 b 와 같 으 면 0 으로 돌아간다.
만약 에 a 가 b 보다 크 면 a - b 가 0 보다 크 면 0 보다 큰 값 을 되 돌려 주 고 배열 은 내림차 순 으로 배열 된다. 즉, a 는 b 의 뒤에 배열 된다.
예 4: 내림차 순 정렬
sortBy(a: any, b: any): number {
return b - a;
}
const arr = ['22', '201', '13', '1000'];
console.log(arr.sort(this.sortBy));
// ["1000", "201", "22", "13"] 예 5: 배열 대상 의 특정한 속성 값 에 따라 정렬 합 니 다.
sortBy(key: string): any {
return ((a: any, b: any) => {
if (a[key] < b[key]) {
return -1;
} else if (a[key] > b[key]) {
return 1;
} else {
return 0;
}
});
}
const arr = [{ name: 'lina', age: 25 }, { name: 'ben', age: 22 }, { name: 'xiaoling', age: 33 }, { name: 'jun', age: 18 }];
console.log(JSON.stringify(arr.sort(this.sortBy('name'))));
// [{"name":"ben","age":22},{"name":"jun","age":18},{"name":"lina","age":25},{"name":"xiaoling","age":33}]
return - 1 은 첫 번 째 매개 변수 가 두 번 째 매개 변수의 왼쪽 에 있어 야 한 다 는 것 을 나타 낸다.
return 1 은 첫 번 째 매개 변수 가 두 번 째 매개 변수 뒤에 있 음 을 나타 낸다.
return 0 은 위치 가 변 하지 않 음 을 나타 낸다.
예 6: 매개 변수 에 따라 오름차 인지 내림차 인지 확인한다.
sortBy(key: string, flag?: boolean): any {
let rev: number;
if (flag === undefined) {
rev = 1;
} else {
rev = (rev) ? 1 : -1;
}
return ((a: any, b: any) => {
if (a[key] < b[key]) {
return rev * -1;
} else if (a[key] > b[key]) {
return rev * 1;
} else {
return 0;
}
});
}
const arr = [{ name: 'lina', age: 25 }, { name: 'ben', age: 22 }, { name: 'xiaoling', age: 33 }, { name: 'jun', age: 18 }];
console.log(JSON.stringify(arr.sort(this.sortBy('name'))));
// [{"name":"ben","age":22},{"name":"jun","age":18},{"name":"lina","age":25},{"name":"xiaoling","age":33}]
sortBy(key: string, flag?: boolean): any {
let rev: number;
if (flag === undefined) {
rev = 1;
} else {
rev = (rev) ? 1 : -1;
}
return ((a: any, b: any) => {
if (a[key] < b[key]) {
return rev * -1;
} else if (a[key] > b[key]) {
return rev * 1;
} else {
return 0;
}
});
}
const arr = [{ name: 'lina', age: 25 }, { name: 'ben', age: 22 }, { name: 'xiaoling', age: 33 }, { name: 'jun', age: 18 }];
console.log(JSON.stringify(arr.sort(this.sortBy('name', false))));
// [{"name":"xiaoling","age":33},{"name":"lina","age":25},{"name":"jun","age":18},{"name":"ben","age":22}]