[Front-end๐Ÿฆ] #24 Array method, Object, ํ•จ์ˆ˜ / 13~14์žฅ

๋˜์ƒยท2021๋…„ 12์›” 1์ผ
0

front-end

๋ชฉ๋ก ๋ณด๊ธฐ
38/58
post-thumbnail

0. ์–ด๋–ค ๊ณต๋ถ€๋ฅผ ํ•ด์•ผํ• ๊นŒ

๊ณตํ†ต : github / ์ •๊ทœํ‘œํ˜„์‹ / HTTP(BE์—์„œ ๋” ์ค‘์š”) / SEO (FE์— ๊ฐ€๊นŒ์›€)

FE : HTML / CSS / JS(AJAX) / REACT / (SASS) / (JQery) / WebPack
BE : JS / tailwind or bootstrap / Node / DB / Server

์ •๋‹ต์€ ์•„๋‹ˆ์ง€๋งŒ ์ด ์ •๋„๋กœ ๋‚˜๋ˆ ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.



1. ๋ฉ‹์‚ฌ ์ˆ˜์—…

๋ฐฐ์—ด ๊ด€๋ จ method, object, function์— ๋Œ€ํ•ด ๋‚˜๊ฐ”๋‹ค.

๋”ฅ๋‹ค์ด๋ธŒ ์ฑ…์—์„œ ๋‹ค์Œ ์žฅ์—์„œ ์•Œ์•„๋ด์š”~ ํ•˜๊ณ  ๋„˜์–ด๊ฐ„๊ฑธ ์•Œ๋ ค์ฃผ์…จ๋‹ค. ์™„์ „ํžˆ ์ž๋ฐ” ๋Š๋‚Œ์ด๋‹ค.

1. ๋ฐฐ์—ด

๋ฐฐ์—ด ์„ ์–ธ ๋ฐฉ๋ฒ•

let ๊ณผ์ผ = ['์‚ฌ๊ณผ', '์ˆ˜๋ฐ•', '๋ณต์ˆญ์•„', '๋”ธ๊ธฐ', '๋ฐ”๋‚˜๋‚˜'];
let ๊ณผ์ผ2 = new Array(5);
let ๊ณผ์ผ3 = new Array('์‚ฌ๊ณผ', '์ˆ˜๋ฐ•', '๋ณต์ˆญ์•„', '๋”ธ๊ธฐ', '๋ฐ”๋‚˜๋‚˜');
let ์ œ์ฃผ๊ณผ์ผ = ['๊ทค', 'ํ•œ๋ผ๋ด‰', '์ฒœํ˜œํ–ฅ'];

๋ฐฐ์—ด method

// ์› ๋ฐฐ์—ด์— ์˜ํ–ฅ X
๊ณผ์ผ.toString(); // '์‚ฌ๊ณผ, ์ˆ˜๋ฐ•, ...'
๊ณผ์ผ.join('!!*'); // ๋ฐฐ์—ด์„ ํ•ฉ์น˜๋Š”๋ฐ ์š”์†Œ ์‚ฌ์ด์— !!*
๊ณผ์ผ.concat(์ œ์ฃผ๊ณผ์ผ); // ํ•ฉ์นจ.
์ œ์ฃผ๊ณผ์ผ.concat(๊ณผ์ผ);
// ์› ๋ฐฐ์—ด์— ์˜ํ–ฅ
๊ณผ์ผ.push('๋ฉ”๋ก '); ๊ณผ์ผ.pop(); // ์ง„์งœ Stack ํ•จ์ˆ˜๋ผ์„œ ํŒŒ์ด์ฌ์ฒ˜๋Ÿผ ์ธ์ž ๋„˜๊ฒจ์ฃผ๋Š”๊ฑฐ ์•ˆ๋จ.
๊ณผ์ผ.slice(start, end+1); // - indexing ํ—ˆ์šฉ, end ์•ˆ์ฃผ๋ฉด start ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ž˜๋ฆผ.
//
๊ณผ์ผ.shift(); // index 0 ์„ ๊บผ๋‚ด์˜ด.
๊ณผ์ผ.unshift('๊ทค'); // index 0 ์— ๋“ค์–ด๊ฐ.
string.split('.'); // .์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ ์„œ ๋ฐฐ์—ด ๋งŒ๋“ค์–ด์คŒ.
๊ณผ์ผ.splice(start, count); // start๋ถ€ํ„ฐ count ๊ฐœ๋ฅผ ๊บผ๋‚ด์˜ด. ์›๋ž˜ ๋ฐฐ์—ด์— ์˜ํ–ฅ.
๊ณผ์ผ.splice(1, 3, 'apple'); // ์› ๋ฐฐ์—ด์˜ 1๋ถ€ํ„ฐ 3๊ฐœ๋ฅผ ์ž˜๋ผ์˜ค๊ณ , ์› ๋ฐฐ์—ด์˜ ํ•ด๋‹น ๋ถ€๋ถ„์— apple์„ ํ•œ๊ฐœ ๋„ฃ์Œ.
๊ณผ์ผ.sort(); // ์‚ฌ์ „์‹ ๊ธฐ์ค€ (์•„์Šคํ‚ค์ฝ”๋“œ) ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๊ทธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋จ.
๊ณผ์ผ.sort((a, b) => a - b); // ์˜ค๋ฆ„์ฐจ์ˆœ
๊ณผ์ผ.sort((a, b) => b - a); // ๋‚ด๋ฆผ์ฐจ์ˆœ
๊ณผ์ผ.reverse(); // ๋ฐฐ์—ด ๊ทธ๋ƒฅ ๋’ค์ง‘์Œ

๋ฐฐ์—ด์˜ ํ˜•๋ณ€ํ™˜

let ํ–‰๋ ฌ = [[1,2,3], [4,5,6], [7,8,9]];
ํ–‰๋ ฌ[0] + ํ–‰๋ ฌ[0]; // '1,2,34,5,6' ๋ฌธ์ž์—ด๋กœ ๊ณ„์‚ฐ์ด ๋˜์–ด๋ฒ„๋ฆผ.
ํ–‰๋ ฌ[0] + ''; // ํ–‰๋ ฌ ์ „์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์„ ๋•Œ.

2. Object

Object

// key, value, property ๋ฅผ array๋กœ ๋ฝ‘์•„์ค€๋‹ค.
Object.keys(person);
Object.values(person);
Object.entries(person); 
// ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ. ์ด๋Ÿฐ์‹์˜ ๋ฐ˜๋ณต๋ฌธ์€ ๊ฑฐ์˜ ์•ˆ์“ฐ๊ธด ํ•œ๋‹ค.
for (let [i, j] of [[1, 2], [3, 4]]) {
  console.log(i, j);
}
for (let [[i, j], k] of [[1, 2], 2], [[1, 2], 4]]) {
  console.log(i, j, k);
}
// ํŠน์ • property ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ด.
Object.getOwnPropertyDescriptor(person, 'name'));

3. ํ•จ์ˆ˜

ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
1. ์žฌ์‚ฌ์šฉ์„ฑ
2. ์•„ํ‚คํ…์ฒ˜ ํŒŒ์•…
3. ์œ ์ง€๋ณด์ˆ˜

  • ์บก์Šํ™” : ํ•จ์ˆ˜ ๋‚ด์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
  • ์ถ”์ƒํ™” : ์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋งŒ ๋ณด๊ณ ๋„ ์–ด๋–ค ์ž‘์—…์„ ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ.

parameter์— default argument ์„ค์ •.

function add(a = 100, b = 200) {
  if (a == 100) {
    return
  }
  return a + b;
}
// ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฒซ๋ฒˆ์งธ๊ป€ ์•ˆ์ฃผ๊ณ  ๋‘๋ฒˆ์งธ๋งŒ ์ฃผ๋Š”๊ฑด ์•ˆ๋จ. ํ•œ๊ฐœ๋งŒ ์ฃผ๋ฉด ์•ž์—๊บผ์— ๋“ค์–ด๊ฐ€๋‹ˆ๊นŒ.
add(undefined, 200); // NaN
add(null, 200); // 200 
// ๊ทธ๋ ‡๊ฒŒ ์“ฐ๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์œผ๋กœ object๋กœ ๋„˜๊ฒจ์ค€๋‹ค.
function add({ a = 100, b = 200 }) { 
  // { a = 100, b = 200 } ์€ ํ”ผ์—ฐ์‚ฐ์ž์ด๋ฏ€๋กœ object literal์ด๋‹ค.
  console.log(a+b);
}
add({b: 300}); // 400

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

//  ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
// ์›๋ž˜ ์œ„์˜ p, q ์ฒ˜๋Ÿผ ๊ตฌ์กฐ ๋ถ„ํ•ดํ• ๋‹น์„ ํ•˜๋ ค๊ณ  a, b๋ฅผ ์„ ์–ธํ•œ๊ฑด๋ฐ,
var { a, b } = { a: 400 }; // b ๋ฅผ ์•ˆ์ฃผ๋ฉด b๊ฐ€ undefined
//  ์ดˆ๊ธฐ๊ฐ’์„ ์ค„ ์ˆ˜ ์žˆ์–ด์„œ ์ค€ ๊ฒƒ ์ž„.
var { a = 100, b = 200 } = { a: 400 }
// ๊ฒฐ๊ตญ ์œ„์˜ ํ•จ์ˆ˜๋Š” object type ( ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ์œ„ํ•œ ) ์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํ•˜๊ณ , object ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„์„œ ๋ถ„ํ•ดํ•œ ํ›„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ. 

ํ˜ธ์ด์ŠคํŒ…์˜ ์ฐจ์ด.

mul(); a(); mul2(); // ๊ฐ€๋Šฅ ๋ถˆ๊ฐ€๋Šฅ ๋ถˆ๊ฐ€๋Šฅ
function mul (a, b) {
  return a*b;
} // ํ˜ธ์ด์ŠคํŒ… ๋œ๋‹ค
let a = function(a, b) {
  return a*b;
} // ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ์‹œ์ ์— ํ˜ธ์ด์ŠคํŒ… ๋œ๋‹ค.
let b = function mul2 (a, b) {
  return a*b;
} // ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ์‹œ์ ์— ํ˜ธ์ด์ŠคํŒ… ๋œ๋‹ค.
// ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋Ÿฐํƒ€์ž„ ์ „๊นŒ์ง€ ๋ณ€์ˆ˜์— undefined๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์—์„œ ๋ถ€๋ฅผ ์ˆ˜ ์—†๋‹ค.
// ๊ฐ€๋ช…ํ•จ์ˆ˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค ์•„์ง ํ‘œํ˜„์‹ ๊ณ„์‚ฐ๋„ ์•ˆ๋๊ณ , ๋ณ€์ˆ˜์— ํ• ๋‹น๋„ ์•ˆ๋์œผ๋‹ˆ๊น.

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

// swift ์—์„œ closure ์‚ฌ์šฉ ์‹œ ์ถ•์•ฝ๋ฌธ๋ฒ• ํ•˜๋Š” ๊ทธ๋Ÿฐ ๋Š๋‚Œ.
let a = (a,b) => return a-b;

์–ด์ œ ์ฝ์—ˆ๋Š”๋ฐ ์ˆ˜์—…์—์„œ ๋‚˜์˜จ ๊ฒƒ๋“ค!

  • String ์€ primitive type ์ด๋ผ immutable
  • ํ•จ์ˆ˜ ์„ ์–ธ๊ณผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ํ˜ธ์ด์ŠคํŒ… ์‹œ์  ๊ทผ๋ฐ ์–ด์ œ ๋Œ€์ถฉ ์ฝ์—ˆ๋Š”์ง€ ์˜ค๋Š˜ ๋ณด๋Š”๋ฐ ์ฒ˜์Œ ๋ณด๋Š”๋“ฏํ•œ ๊ธฐ๋ถ„์ด์—ˆ๋‹ค




3. Deep Dive

  1. Scope ๋งํฌ
  2. ์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์  ๋งํฌ

์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ–ˆ๋‹ค. ์ €์ž‘๊ถŒ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด์„œ ํ•ด๋‹น ๋‚ด์šฉ์€ ๊ฐœ์ธ ๊ธ€๋กœ ์˜ฎ๊ธด๋‹ค.




3. ์ž‘์€ ํšŒ๊ณ 

  • ์˜ค๋Š˜์€ js array method, Object, ํ•จ์ˆ˜์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค. ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด๋ผ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ๋„ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค.
  • scope ๊ด€๋ จ ๋ถ€๋ถ„์„ ์ฝ์—ˆ๋‹ค. ์œ„ํ—˜ํ•˜๊ณ  ์ž์›๊ด€๋ฆฌ์— ์•ˆ์ข‹์€๊ฑด ์•Œ๊ฒ ๋Š”๋ฐ, ํ•ด๊ฒฐ์ฑ…์„ ์‹ค๋ฌด์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค.
  • js์— ๋น ์ ธ์„œ ์ž๊พธ ๋‹ค๋ฅธ ํ•  ์ผ์„ ๋ฏธ๋ฃจ๋Š”๋ฐ ๋งˆํฌ์—… ํ•ด์•ผ๋œ๋‹ค. ๋งˆํฌ์—…ํ•ด์•ผ๋ผ!!!! ํ•ด์•ผ๋ผ!!!!!!!!




profile
0๋…„์ฐจ iOS ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€