스택큐힙리스트

객체 배열에서 문자열 속성 값에 따라 정렬하십시오. 본문

카테고리 없음

객체 배열에서 문자열 속성 값에 따라 정렬하십시오.

스택큐힙리스트 2023. 3. 11. 08:53
반응형

저는 자바스크립트 객체 배열을 가지고 있습니다.

var objs = [

{ first_nom: 'Lazslo', last_nom: 'Jamf' },

{ first_nom: 'Pig', last_nom: 'Bodine' },

{ first_nom: 'Pirate', last_nom: 'Prentice' }

];

JavaScript에서 #$^&*! $! $&의 값을 기준으로 정렬하는 방법은 무엇인가요?

나는 sort(a,b) 에 대해 알고 있지만, 이는 문자열과 숫자에만 작동하는 것 같다. 내 객체에 toString() 메소드를 추가해야 할까?

답변 1

당신만의 비교 함수를 작성하는 것은 충분히 쉽습니다.

function compare( a, b ) {

if ( a.last_nom < b.last_nom ){

return -1;

}

if ( a.last_nom > b.last_nom ){

return 1;

}

return 0;

}

objs.sort( compare );

또는 인라인 ( c/o Marco Demaio ):

objs.sort((a,b) => (a.last_nom > b.last_nom) ? 1 : ((b.last_nom > a.last_nom) ? -1 : 0))

한국어로 번역해주세요.

숫자로 간단하게 ( c/o Andre Figueiredo ):

objs.sort((a,b) => a.last_nom - b.last_nom); // b - a for reverse sort

답변 2

배열의 객체를 문자열 속성값으로 정렬하는 방법

자바스크립트에서는 배열 내 자바스크립트 객체의 속성값을 기준으로 정렬하는 방법이 매우 쉽게 제공됩니다. 이를 사용해 보다 가독성 좋은 코드를 작성할 수 있습니다.

먼저 정렬하고자 하는 속성값이 포함된 객체 배열을 생성합니다. 그 다음 Array.sort() 메서드를 호출하고, 정렬에 사용될 비교 함수를 인자로 전달합니다. 이 함수는 각 객체의 속성값을 비교하여 정렬 기준을 결정합니다.

객체 배열을 문자열 속성값을 기준으로 정렬하는 경우, 비교 함수는 다음과 같이 작성할 수 있습니다.

```

function compare(a, b) {

const propertyA = a.stringProperty.toUpperCase();

const propertyB = b.stringProperty.toUpperCase();

let comparison = 0;

if (propertyA > propertyB) {

comparison = 1;

} else if (propertyA < propertyB) {

comparison = -1;

}

return comparison;

}

arrayOfObjects.sort(compare);

```

이 경우, 객체의 stringProperty 값을 대문자로 변환하여 비교합니다. 비교 결과가 양수일 경우 A 객체가 B 객체보다 우선순위가 높다고 간주되며, 음수일 경우 A 객체가 B 객체보다 우선순위가 낮다고 간주됩니다.

이렇게 작성된 비교 함수를 사용하여 객체 배열을 문자열 속성값으로 정렬할 수 있습니다. 정렬 결과를 활용하면 보다 직관적이고 가독성 좋은 코드를 작성할 수 있으므로, 이러한 기법을 적극 활용하는 것이 좋습니다.

반응형
Comments