๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+41] ์ด๋ฒคํŠธ์™€ ๋ฉ”์‹œ์ง€, sort์˜ ์›๋ฆฌ

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 11. 17.

 

 

๊ตญ๋น„์ง€์› D+41

-  ์ด๋ฒคํŠธ์™€ ๋ฉ”์‹œ์ง€, sort์˜ ์›๋ฆฌ -

 


 

์ด๋ฒคํŠธ์™€ ๋ฉ”์‹œ์ง€

• ์ด๋ฒคํŠธ

- ์ด๋ฒคํŠธ๋Š” ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋Š” ์‚ฌ๊ฑด์„ ์˜๋ฏธํ•œ๋‹ค.

- ์›น์€ ์ด๋ฒคํŠธ ๋ฉ์–ด๋ฆฌ์ธ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜์—ˆ๋‹ค๊ณ  ์ˆœ๊ฐ„์— ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋งŒํผ ์ปดํ“จํ„ฐ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

- ์ด๋ฒคํŠธ๋Š” ๋ฐœ์ƒํ• ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น๋˜๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํŠ€์–ด ๋‚˜์˜จ๋‹ค.

ex) event : ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ธ๋‹ค → message : ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์ด๋Š” ์œ„์น˜์— ๋Œ€ํ•œ ์ขŒํ‘œ๊ฐ’

 

• ๋ฉ”์‹œ์ง€

- ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด์„œ ๋‚˜์˜ค๋Š” ๊ฐ’์„ ๋ฉ”์‹œ์ง€๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๋ฉ”์‹œ์ง€๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์›น์ด ๋Œ์•„๊ฐ„๋‹ค.

 

์˜ˆ๋“ค๋“ค์–ด ์„ค๋ช…ํ•˜์ž๋ฉด, ๋งŒ์•ฝ A์‚ฌ์ดํŠธ์— ์žˆ๋Š” 3๋ฒˆ์งธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  ์‹ถ๋‹ค.

๊ทธ๋ž˜์„œ ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ๋˜๋Š” ๋™์‹œ์— ๋งˆ์šฐ์Šค ์ขŒํ‘œ๊ฐ’์— ๋Œ€ํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด๋•Œ ๋‹จ์ˆœํžˆ ํ™”๋ฉด์— ๋Œ€ํ•œ ์ขŒํ‘œ๊ฐ’์ด ๋‚˜์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋‚ด๊ฐ€ ํด๋ฆญํ•œ๊ฒŒ ์–ด๋Š์‚ฌ์ดํŠธ๊ณ  ์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ค ๋ฒ„ํŠผ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋™์ž‘๋˜๊ฒŒ ๋œ๋‹ค.

 

๋งˆ์šฐ์Šคํด๋ฆญ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์˜จ ๋ฉ”์‹œ์ง€๊ฐ€ ์˜ค๋ฉด ๊ฐ€์žฅ์ƒ์œ„ window๊ฐ์ฒด์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€์ฐจ๋ก€๋“ค์–ด๊ฐ€์„œ ๋ชฉํ‘œ์ง€์ ๊นŒ์ง€ ๋„๋‹ฌํ•˜๋Š” ์›๋ฆฌ์ด๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋‚ด๊ฐ€ ํด๋ฆญํ•œ ๋ถ€๋ถ„๋งŒ ์ด๋ฒคํŠธ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ณ„์ธต์ ์œผ๋กœ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ผ์šฐํŒ…๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 


sort์˜ ์›๋ฆฌ

• sort๋ž€?

๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ์ž๊ธฐ์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š” ์ ˆ์ฐจ์ด๋‹ค.

=> ์ˆœ์„œ๋Œ€๋กœ๋งŒ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด ์ •๋ ฌ์ด ์•„๋‹ˆ๋ผ ์ž๊ธฐ ์œ„์น˜๋ฅผ ์ฐพ์•„๊ฐ€๋Š”๊ฒƒ์ด ์ •๋ ฌ์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

• ์›๋ฆฌ

sort๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ array.sort()๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‚˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค.

 

array.sort(๋น„๊ตํ•จ์ˆ˜);

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ •๋ ฌ์—๋Š” ์ข…๋ฅ˜๊ฐ€ ๋งŽ์ง€๋งŒ ๋ชจ๋“  ์ •๋ ฌ์˜ ๊ธฐ์ค€์€ "๋น„๊ต"์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— sort ๋ฉ”์†Œ๋“œ ์•ˆ์— ๋‘ ๊ฐ’์„ ๊ธฐ์ค€์— ๋งž๊ฒŒ ๋น„๊ตํ•˜๋Š” compareํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์„œ ๊ฐ’์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

comapreํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์— ๋”ฐ๋ผ ๋‘ ๊ฐ’์ด ์ •๋ ฌ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‘ ๊ฐ’ a์™€ b๋ฅผ ๋น„๊ตํ–ˆ์„ ๋•Œ ์กฐ๊ฑด์—์„œ a๊ฐ€ b๋ณด๋‹ค ๋‚ฎ์€ ์ธ๋ฑ์Šค ๊ฐ’์„ ๊ฐ€์ ธ์•ผํ•  ๋• -1๋ฆฌํ„ด์„, ๋†’์€ ์ธ๋ฑ์Šค ๊ฐ’์„ ๊ฐ€์ ธ์•ผ ํ•  ๋•Œ์—๋Š” 1์„ ๋ฆฌํ„ดํ•˜๊ณ  ๊ทธ ์™ธ์˜๋Š” 0์„ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ compareํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

function compareNumbers(a, b) {
  return a - b;
}

๋˜ํ•œ ๋น„๊ตํ•จ์ˆ˜๋ฅผ ์ถ•์•ฝํ•ด์„œ ์œ„์˜ ์ฝ”๋“œ๋กœ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ •๋ ฌ์„ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

 

// ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋˜ value 99์ธ ๋†ˆ์€ ์•ž์œผ๋กœ ๋ณด๋‚ด๊ธฐ
const data = [
	{
		id: 'abc1',
		vlaue : 150
	}, 
	{
		id: 'abc2',
		vlaue : 99
	}, 
	{
		id: 'abc3',
		vlaue : 99
	}, 
	{
		id: 'abc4',
		vlaue : 500
	}, 
	{
		id: 'abc5',
		vlaue : 48
	}
];

const compare = function(a, b)
	{
		if(a.vlaue === 99)
		{
			return -1;
		}
		else if (b.vlaue === 99)
		{
			return 1;
		}
		else
		{
			return b.vlaue - a.vlaue;
		}
	};

data.sort(compare);

console.log(data);

์ด๋ฐ–์—๋„ ์ •๋ ฌ์€ ๋‹จ์ˆœํžˆ ์ˆซ์ž์˜ ํฌ๊ธฐ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ๋“ค์–ด ๊ฐ’์„ ๋‚˜์—ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€