정리노트

[JAVASCRIPT/자바스크립트] 객체 내부 배열정렬 본문

프로그래밍/Javascript

[JAVASCRIPT/자바스크립트] 객체 내부 배열정렬

Rolen 2022. 11. 19. 00:21

sort() 메소드는 단순한 배열일 때는 그냥 사용하지만

객체 내부에 있는 특정한 값으로 정렬하고 싶을 때는 매개 변수에 함수를 넣고 대소비교 후 리턴

 

sort() -> 파괴적 메소드

let arrayB = [{
    name: '고구마',
    price: 1000
}, {
    name: '감자',
    price: 500
}, {
    name: '바나나',
    price: 400
}];


// 명시적 함수선언
// price <숫자> 로 정렬
arrayB.sort(function(a, b) {
    return a.price - b.price;
});
console.log(arrayB);

// 묵시적 함수선언
arrayB.sort((a, b) => {
    return a.price - b.price;
});
console.log(arrayB);


// name <문자열> 로 정렬
// -1 (앞의 것이 더 작다), 0 (같다), 1 (앞의 것이 더 크다)
arrayB.sort((a, b) => {
    if (a.name < b.name) {
        return -1;
    } else if (a.name > b.name) {
        return 1;
    } else {
        return 0;
    }
});
console.log('- 객체 내부의 문자열로 정렬')
console.log(arrayB);

함수 내부에서 함수를 인자로 하는 메소드 사용

const points = [40, 100, 1, 5, 25, 10];

function myFunction1() {
  points.sort();
  console.log(points);
}
function myFunction2() {
  points.sort(function(a, b) { 	// 함수 내에서 함수를 인자로 하는 메소드 사용 - 콜백함수
      return a - b              //  points 내의 값을 순서대로 a, b에 대입
    }); 			// 결과가 음수라면 -1, 양수라면 1, 같다면 0 전송
  console.log(points);
}


myFunction1();		// [ 1, 10, 100, 25, 40, 5 ]
myFunction2();		// [ 1, 5, 10, 25, 40, 100 ]
728x90