๐ŸŽ/Javascript

[Javascript] ๋ฐฐ์—ด ์ •๋ ฌํ•˜๊ธฐ (์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ, ๋ฌธ์ž์—ด, ๊ฐ์ฒด)

์œ ์ €001 2023. 4. 1. 12:46

1๏ธโƒฃ sort() ํ•จ์ˆ˜ ์‚ฌ์šฉ

arr.sort([compareFunction])

 compareFunction : ์ •๋ ฌ ์ˆœ์„œ๋ฅผ ์ •์˜ํ•˜๋Š” ํ•จ์ˆ˜

์ด ๊ฐ’์ด ์ƒ๋žต๋  ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ์š”์†Œ๊ฐ€ ๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰๋˜์–ด ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋œ๋‹ค.

ex. [1, 2, 3, 12, 23] โžก๏ธ [1, 12, 2, 23, 3]

 

* ์‚ฌ์šฉ ์‹œ ์›๋ณธ ๋ฐฐ์—ด ์ž์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

 

arr = ['oh', 'My', 'b', 'Boy'];

arr.sort();
//Boy, My, b, oh

 

2๏ธโƒฃ ๋น„๊ต ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๊ธฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋น„๊ต์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

//์˜ค๋ฆ„์ฐจ์ˆœ
arr.sort((a, b) => a > b ? 1 : -1);

//๋‚ด๋ฆผ์ฐจ์ˆœ
arr.sort((a, b) => a > b ? -1 : 1);

 

3๏ธโƒฃ localeCampare() ๋ฉ”์†Œ๋“œ

๋ฌธ์ž์—ด์˜ ์‚ฌ์ „์ƒ ์ˆœ์„œ์—์„œ ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ์•ž์— ์žˆ๋Š”์ง€, ๋’ค์— ์žˆ๋Š”์ง€, ๊ฐ™์€์ง€ ํŒ๋‹จํ•˜์—ฌ -1, 1, 0์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ฃผ๋Š” ๋ฉ”์„œ๋“œ

'a'.localeCompare('c');
//-1

let str = ['a', 'z', 'c', 'y'];
str.sort((a, b) => a.localeCompare(b));
//['a', 'c', 'y', 'z']
// ์˜ค๋ฆ„์ฐจ์ˆœ
arr.sort((a, b) ⇒ a.localeCompare(b));

// ๋‚ด๋ฆผ์ฐจ์ˆœ
arr.sort((a, b) ⇒ b.localeCompare(a));

 

4๏ธโƒฃ ํŠน์ •๊ฐ’ ์ •๋ ฌ ๊ธฐ์ค€ ๋งŒ๋“ค๊ธฐ

ํŠน์ •ํ•œ ์ •๋ ฌ์˜ ๊ธฐ์ค€์„ ๋งŒ๋“ค์–ด์„œ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

//์ •๋ ฌ ๊ธฐ์ค€
const orderBy = ['ํšŒ์žฅ', '์‚ฌ์žฅ', '๋ถ€์žฅ', '๊ณผ์žฅ', '์‚ฌ์›'];
const data = ['์‚ฌ์žฅ', '์‚ฌ์›', 'ํšŒ์žฅ', '๋ถ€์žฅ', '๊ณผ์žฅ', '์‚ฌ์›'];

data.sort((a, b) => orderBy.indexOf(a) - orderBy.indexOf(b));

 

 


 

1๏ธโƒฃ ์ˆซ์ž ์ •๋ ฌํ•˜๊ธฐ

 

1๏ธโƒฃ-1๏ธโƒฃ ์ˆซ์ž ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

arr.sort(function(a, b) {
	return a - b;
});
arr.sort((a, b) => a - b);

1๏ธโƒฃ-2๏ธโƒฃ ์ˆซ์ž ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

arr.sort(function (a, b) {
	return b - a;
});
arr.sort((a, b) => b - a);

 

 

2๏ธโƒฃ ๋ฌธ์ž ์ •๋ ฌํ•˜๊ธฐ

 

2๏ธโƒฃ-1๏ธโƒฃ ๋ฌธ์ž ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

arr = ['oh', 'My', 'b', 'Boy'];

arr.sort();
//Boy, My, b, oh

2๏ธโƒฃ-2๏ธโƒฃ ๋ฌธ์ž ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ

arr = ['oh', 'My', 'b', 'Boy'];

arr.sort(function(a, b) {
	if (a < b) return 1;
    if (a > b) return -1;
    if (a === b) return 0;
});
//oh, b, My, Boy

 

 

* ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ์˜ค๋ฆ„์ฐจ์ˆœ/๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”

๋ฌธ์ž์—ด ๋น„๊ต ์‹œ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž/์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

[Javascript] ๋ฌธ์ž์—ด ๋Œ€์†Œ๋ฌธ์ž ๋ณ€๊ฒฝ (toUpperCase(), toLowerCase()

 

2๏ธโƒฃ-3๏ธโƒฃ ๋ฌธ์ž ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ x)

const arr = ['oh', 'My', 'b', 'Boy'];

arr.sort(function(a, b) {
	let upperA = a.toUpperCase();
    ler upperB = b.toUpperCase();
    
    if (upperA > upperB) return 1;
    if (upperA < upperB) return -1;
    if (upperA === upperB) return 0;
});

//b, Boy, My, oh

2๏ธโƒฃ-4๏ธโƒฃ ๋ฌธ์ž ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ธฐ (๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ x)

const arr = ['oh', 'My', 'b', 'Boy'];

arr.sort(function(a, b) {
	let upperA = a.toUpperCase();
    ler upperB = b.toUpperCase();
    
    if (upperA > upperB) return -1;
    if (upperA < upperB) return 1;
    if (upperA === upperB) return 0;
});
//oh, My, Boy, b

 

 

3๏ธโƒฃ๊ฐ์ฒด ์ •๋ ฌํ•˜๊ธฐ

์ •๋ ฌ ์‹œํ‚ค๋Š” ๊ธฐ์ค€์„ ๊ฐ์ฒด์˜ value ๊ฐ’์œผ๋กœ ์žก์•„์„œ ๋น„๊ตํ•œ๋‹ค.

const data = [
	{ name: 'cherry', color: "๋นจ๊ฐ„์ƒ‰" },
    { name: 'banana', color: "๋…ธ๋ž€์ƒ‰" },
    { name: 'orange', color: "์ฃผํ™ฉ์ƒ‰" }
];

//sortํ•จ์ˆ˜
data.sort(function(a, b) {
	return a.name - b.name;
});

// ๋น„๊ต์—ฐ์‚ฐ์ž
[...data].sort((a, b) => a.name > b.name ? 1 : -1);

// localeCompare ๋ฉ”์„œ๋“œ
[...data].sort((a, b) => a.name.localeCompare(b.name));