Javascript

[javascript] ๋ฌธ์ž์—ด, ๋ฐฐ์—ด ์ค‘๋ณต ์ œ๊ฑฐ (Set, filter)

ddon 2021. 8. 28. 16:49

new Set([iterable]);

์‚ฝ์ž… ์ˆœ์„œ๋Œ€๋กœ ์š”์†Œ ์ˆœํšŒ, Set์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์—†๋‹ค.

const setTest = new Set();

setTest.add(1);	// {1}
setTest.add(2);	// {1, 2}
// 1์„ addํ•ด๋„ set์— 1์ด ์žˆ์–ด์„œ ๋ฌด์‹œ๋จ
setTest.add(1);	// {1, 2}

 

arr.filter(callback(element[, index[, array]])[, thisArg])

callback : ์š”์†Œ๋ฅผ ๊ฑธ๋Ÿฌ์ฃผ๋Š” ํ•จ์ˆ˜, ์กฐ๊ฑด์— ๋งž์ง€ ์•Š์œผ๋ฉด ์‚ญ์ œ

element : ์ฒ˜๋ฆฌํ•  ํ˜„์žฌ ์š”์†Œ

index(option) : ์ฒ˜๋ฆฌํ•  ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค

const filterArr = [1, 2, 3, 4, 5];

filterArr.filter(function(v){
	return v > 3;	// [4, 5]
});

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
filterArr.filter(v => v > 3);	// [4, 5]

 

๋ฌธ์ž์—ด, ๋ฐฐ์—ด ์ค‘๋ณต ์ œ๊ฑฐํ•˜๊ธฐ

/* ๋ฌธ์ž์—ด ์ค‘๋ณต ์ œ๊ฑฐ : [...new Set(str)].join('') */
const str = 'abcaabbd';

// new Set์œผ๋กœ ์ค‘๋ณต ์ œ๊ฑฐ
new Set(str);			// {"a", "b", "c", "z"}
[...new Set(str)];		//  ["a", "b", "c", "z"]
[...new Set(str)].join('');	// "abcz"
// ๊ธฐ์กด str์ด ์˜ํ–ฅ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
console.log(str);		// "abcaabbd"


/* ๋ฐฐ์—ด ์ค‘๋ณต ์ œ๊ฑฐ : 1. [...new Set(arr)], 2. Array.prototype.filter() */
const arr = ['a', 'b', 'c', 'a', 'a', 'b', 'b', 'd'];

// 1. [...new Set(arr)]
[...new Set(arr)]	// ["a", "b", "c", "d"]
// ๊ธฐ์กด arr๊ฐ€ ์˜ํ–ฅ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
console.log(arr);	// ["a", "b", "c", "a", "a", "b", "b", "d"]

// 2. Array.prototype.filter()
// indexOf๋Š” ์ฒ˜์Œ์œผ๋กœ ๋ฐœ๊ฒฌํ•œ a์˜ index ์œ„์น˜๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
// ๊ทธ ๋‹ค์Œ์— a๋ฅผ ์ˆœํšŒํ• ๋•Œ๋Š” indexOf(v)์™€ i๊ฐ€ ๋งž์ง€ ์•Š๋Š”๋‹ค.
arr.filter((v, i) => arr.indexOf(v) === i); // ["a", "b", "c", "d"]
// ๊ธฐ์กด arr๊ฐ€ ์˜ํ–ฅ๋ฐ›์ง€ ์•Š๋Š”๋‹ค.
console.log(arr);	// ["a", "b", "c", "a", "a", "b", "b", "d"]