/JavaScript-coding-test

๐Ÿค˜๐ŸปJavaScript ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ‘ผ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ์ €์žฅ์†Œ๐Ÿค˜๐Ÿป

Primary LanguageJavaScript

JavaScript Coding Test

์ƒˆ๋กœ ๋ฐฐ์šด jsํ•จ์ˆ˜

#Math.pow()ํ•จ์ˆ˜
ํ•จ์ˆ˜๋Š”base^exponent์ฒ˜๋Ÿผ base ์— exponent๋ฅผ ์ œ๊ณฑํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

#์˜ˆ์‹œ
Math.pow(base, exponent);
base : 2,8,10,16 ์ง„์ˆ˜๋ฅผ ๋„ฃ๋Š” ๊ณณ.
exponent : ์ง„์ˆ˜๋“ค์„ ์ œ๊ณฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ง€์ˆ˜.

#๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ์˜ˆ์‹œ
(base ** exponent)
** ๋‘๊ฐœ๋งŒ ์ ์–ด๋„ Math.pow์˜ ์—ญํ• ์„ ํ•œ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ๋„ ์“ฐ์ด๋‹ˆ ๊ถ๊ธˆํ•˜๋ฉด ์ฐพ์•„ ๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. (๋‹ค๋ฅธ ๋ฐฉ์‹์€ ์ถ”ํ›„์— ์—…๋กœ๋“œ ์˜ˆ์ •)


#split() ํ•จ์ˆ˜
์ด ๋ฉ”์„œ๋“œ๋Š” String ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•œ ๊ตฌ๋ถ„์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

#์˜ˆ์‹œ

const str = 'Theโœ”quickโœ”brownโœ”fox';
const words = str.split('โœ”'); // โœ”ํ‘œ์‹œ๊ฐ€ ๋œ ๋ถ€๋ถ„์„ ์ธ์‹ ํ•˜๊ณ  ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆ ์„œ ์ถœ๋ ฅํ• ์ˆ˜์žˆ๋‹ค.
console.log(words[3]);
// expected output: "fox"

#๋‹ค๋ฅธ ์˜ˆ์‹œ

const str = 'A,B,C,D';
const words = str.split(','); // ,ํ‘œ์‹œ๊ฐ€ ๋œ ๋ถ€๋ถ„์„ ์ธ์‹ ํ•˜๊ณ  ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆ ์„œ ์ถœ๋ ฅํ• ์ˆ˜์žˆ๋‹ค.
console.log(words[2]);
// expected output: "C"

๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ๋„ ์“ฐ์ด๋‹ˆ ๊ถ๊ธˆํ•˜๋ฉด ์ฐพ์•„ ๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. (๋‹ค๋ฅธ ๋ฐฉ์‹์€ ์ถ”ํ›„์— ์—…๋กœ๋“œ ์˜ˆ์ •)


#Number() ํ•จ์ˆ˜

Number ๊ฐ์ฒด๋Š” ์ˆซ์ž ๊ฐ’์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ž˜ํผ(wrapper) ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. Number ๊ฐ์ฒด๋Š” Number() ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

#์˜ˆ์‹œ

new Number(value);
var a = new Number('123'); // a === 123์€ false
var b = Number('123'); // b === 123์€ true
a instanceof Number; // true
b instanceof Number; // false

value : ์ƒ์„ฑํ•  ๊ฐ์ฒด์˜ ์ˆซ์ž ๊ฐ’.

Number ๊ฐ์ฒด์˜ ์ฃผ๋œ ์šฉ๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์œผ๋ฉด NaN์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋กœ์จ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด(new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด) Number๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜•๋ณ€ํ™˜์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#sort() ํ•จ์ˆ˜

์ด ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ์€ stable sort๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

#์˜ˆ์‹œ

const array1 = [1, 30, 4, 21, 100000];
array1.sort((a,b) => a - b); // {์ค‘์š”} sortํ•จ์ˆ˜ ์•ˆ์— (a,b) => a - b ์จ์„œ a์™€ b๋ฅผ ๋บ„์…ˆ์„ ํ•˜์—ฌ ๋‚˜์˜จ ๊ฐ’์ด ์–‘์ˆ˜์ด๋ฉด a๊ฐ€ b์™€ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค, 
//๋˜ ์Œ์ˆ˜์ด๋ฉด ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๋’ค์— ๋ฐฐ์—ด์•ˆ์˜ ๊ฐ’๊ณผ ๋บ„์…ˆ์„ ํ•œ๋‹ค
//์˜ˆ๋ฅผ ๋“ค์–ด 1-30 = -29 ์ด๋‹ค. ์Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  30์˜ ๋’ค์— ๊ฐ’์ธ 4์™€ ๋บ„์…ˆ์„ ํ•œ๋‹ค 30-4 = 26 ์–‘์ˆ˜ ์ด๊ธฐ ๋•Œ๋ฌธ์— 30 ๊ณผ 4์˜ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พผ๋‹ค. 
//์ด๋ ‡๊ฒŒ ํ•˜์—ฌ ์ž‘์€ ๊ฐ’์€ ์•ž์œผ๋กœ ํฐ ๊ฐ’์€ ๋’ค๋กœ ๊ฐ€๋Š” ์ •๋ ฌ ๋ฐฉ์‹์ด๋‹ค. ์ด๊ฒƒ์€ ์™ธ์›Œ๋‘๋ฉด ์ •๋ง ์ข‹์€ ๋ฐฉ์‹์ด๋‹ค.
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]

#parseInt() ํ•จ์ˆ˜
ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด ์ธ์ž๋ฅผ ๊ตฌ๋ฌธ๋ถ„์„ํ•˜์—ฌ ํŠน์ • ์ง„์ˆ˜(์ˆ˜์˜ ์ง„๋ฒ• ์ฒด๊ณ„์— ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’)์˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let Hex = 'A';
console.log(roughScale(Hex, 16)); // 16์ง„์ˆ˜๋ฅผ 10์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋Š” ์ฝ”๋“œ

#join() ํ•จ์ˆ˜
join() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

#์˜ˆ์‹œ

const elements = ['Fire', 'Air', 'Water'];

console.log(elements.join(''));
// expected output: "FireAirWater" // 'Fire', 'Air', 'Water'์ด ์‚ฌ์ด์‚ฌ์ด์— ์•„๋ฌด๋Ÿฐ ๊ธฐํ˜ธ ์—†์ด ์ถœ๋ ฅ์ด ๋œ๋‹ค. 

console.log(elements.join('-'));
// expected output: "Fire-Air-Water" // 'Fire', 'Air', 'Water'์ด join('-'); ์ด๋ ‡๊ฒŒ ์จ์ค€๋‹ค๋ฉด ์‚ฌ์ด์‚ฌ์ด์— ' - '์ด ๋ถ™์–ด์„œ ์ถœ๋ ฅ์ด ๋œ๋‹ค.

#slice() ํ•จ์ˆ˜
slice() ๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ค ๋ฐฐ์—ด์˜ begin๋ถ€ํ„ฐ end๊นŒ์ง€(end ๋ฏธํฌํ•จ)์— ๋Œ€ํ•œ ์–•์€ ๋ณต์‚ฌ๋ณธ์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์›๋ณธ ๋ฐฐ์—ด์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

#์˜ˆ์‹œ

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
//์˜ˆ๋ฅผ ๋“ค์–ด, slice(1,4)๋Š” ๋‘๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ๋„ค๋ฒˆ์งธ ์š”์†Œ๊นŒ์ง€ (1, 2 ๋ฐ 3์„ ์ธ๋ฑ์Šค๋กœ ํ•˜๋Š” ์š”์†Œ) ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

console.log(animals.slice(2)); 
// expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2));
// expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]

์Œ์ˆ˜ ์ธ๋ฑ์Šค๋Š” ๋ฐฐ์—ด์˜ ๋์—์„œ๋ถ€ํ„ฐ์˜ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
slice(-2) ๋Š” ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

#shift() ํ•จ์ˆ˜
shift() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์ œ๊ฑฐ๋œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ณ€ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

const array1 = [1, 2, 3];

const firstElement = array1.shift(); // ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณ€์ˆ˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ฆฌํ„ด๊ฐ’์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•จ. ๋ณ€์ˆ˜๋ฅผ ์•ˆ ์“ด๋‹ค๋ฉด ๋ฆฌํ„ด๊ฐ’์„ ์‚ฌ์šฉํ• ์ˆ˜๊ฐ€ ์—†์Œ.

console.log(array1);
// expected output: Array [2, 3]

console.log(firstElement);
// output: 1


#Array.from() ํ•จ์ˆ˜
Array.from() ๋ฉ”์„œ๋“œ๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด๋‚˜ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์–•๊ฒŒ ๋ณต์‚ฌํ•ด ์ƒˆ๋กœ์šดArray ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]