2021-12-06 TIL

λ””μ•„Β·2021λ…„ 12μ›” 6일
1

멋사FE슀쿨1κΈ°

λͺ©λ‘ 보기
16/20
post-thumbnail

🦁 Day27

πŸ“’ 이 글은 λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ λ”₯λ‹€μ΄λΈŒ 책을 μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.


πŸ“– 였늘 κ³΅λΆ€ν•œ 것

λ°°μ—΄

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œμ˜ 배열은 ν¬μ†Œ λ°°μ—΄! λ™μΌν•œ λ°μ΄ν„°νƒ€μž…μ˜ μ—°μ†λœ λ©”λͺ¨λ¦¬κ³΅κ°„을 μ°¨μ§€ν•˜λŠ” 배열이 μ•„λ‹ˆλ‹€.

λ°°μ—΄κ³Ό 객체의 차이

  • 객체와 달리 λ°°μ—΄μ—λŠ” κ°’μ˜ μˆœμ„œ, length ν”„λ‘œνΌν‹°κ°€ μžˆλ‹€. 반볡문 톡해 순차적으둜 값에 μ ‘κ·Όν•˜κΈ° μ ν•©ν•œ 자료 ꡬ쑰

Array μƒμ„±μž ν•¨μˆ˜

μ „λ‹¬λœ μΈμˆ˜κ°€ 1개이고 숫자인 경우, length ν”„λ‘œνΌν‹° 값이 인수인 λ°°μ—΄ 생성

const arr = new Array(10);

console.log(arr); // [empty * 10 ]
console.log(arr.length); // 10
//  length ν”„λ‘œνΌν‹° 값은 0이 μ•„λ‹Œ 10μ΄μ§€λ§Œ μ‹€μ œ λ°°μ—΄μ˜ μš”μ†ŒλŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

μ „λ‹¬λœ μΈμˆ˜κ°€ μ—†λŠ” 경우 빈 λ°°μ—΄ 생성

new Array(); // []

μ „λ‹¬λœ μΈμˆ˜κ°€ 2개 μ΄μƒμ΄κ±°λ‚˜ μˆ«μžκ°€ μ•„λ‹Œ 경우 인수λ₯Ό μš”μ†Œλ‘œ κ°–λŠ” 배열을 생성

new Array(1, 2, 3); // [1, 2, 3]

//μ „λ‹¬λœ μΈμˆ˜κ°€ 1κ°œμ§€λ§Œ μˆ«μžκ°€ μ•„λ‹ˆλ©΄ 인수λ₯Ό μš”μ†Œλ‘œ κ°–λŠ” λ°°μ—΄ 생성
new Array({}); // [{}]

Array.of

μ „λ‹¬λœ μΈμˆ˜κ°€ 1개이고 인수λ₯Ό μš”μ†Œλ‘œ κ°–λŠ” λ°°μ—΄ 생성

Array.of(1) // [1]

Array.of(1,2,3) // [1,2,3]
Array.of('string') // ['string']

Array.from

//μœ μ‚¬ λ°°μ—΄ 객체 λ³€ν™˜ν•˜μ—¬ λ°°μ—΄ 생성
Array.from({ length: 3, 0: a, 1: b, 2: c }) // [a, b, c]

// length ν”„λ‘œνΌν‹°λ§Œ μžˆλŠ” μœ μ‚¬λ°°μ—΄ 객체λ₯Ό 인수둜 μ£Όλ©΄ undefined μš”μ†Œλ‘œ 배열을 μ±„μš΄λ‹€
Array.from({length: 3}); // [undefined, undefined, undefined]

// μ΄ν„°λŸ¬λΈ” λ³€ν™˜ν•˜μ—¬ λ°°μ—΄ 생성
Array.from('hello') // ['h', 'e', 'l', 'l', 'o']

// λ‘λ²ˆμ§Έ 인수둜 콜백 ν•¨μˆ˜ 전달 μ‹œ μ½œλ°±ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œ μƒˆ λ°°μ—΄ μƒμ„±ν•˜μ—¬ λ°˜ν™˜
Array.from({ length: 3}, (_, i) => i) // 

λ°°μ—΄ μš”μ†Œμ˜ 좔가와 κ°±μ‹ 

λ°°μ—΄ μΈλ±μŠ€μ—λŠ” 0μ΄μƒμ˜ μ •μˆ˜ λ˜λŠ” μ •μˆ˜ ν˜•νƒœμ˜ λ¬Έμžμ—΄ μ‚¬μš©ν•΄μ•Ό λœλ‹€. κ·Έ μ΄μ™Έμ˜ 값을 λ„£μœΌλ©΄ μš”μ†Œκ°€ μ•„λ‹ˆκ³  ν”„λ‘œνΌν‹°κ°€ μƒμ„±λœλ‹€

const arr = [];

// λ°°μ—΄ μš”μ†Œμ˜ μΆ”κ°€
arr[0] = 1;
arr['1'] = 2; // μΈλ±μŠ€μ— λ¬Έμžμ—΄ μ •μˆ˜λ₯Ό 넣어도 숫자 μ •μˆ˜λ‘œ μžλ™ ν˜•λ³€ν™˜ν•œλ‹€

// ν”„λ‘œνΌν‹° μΆ”κ°€
arr['foo'] = 3; // arr.foo = 3
arr.bar = 4;
arr[1.1] = 5;
arr[-1] = 6;

console.log(arr) // [1, 2, foo: 3, bar: 4, '1.1': 5, '-1': 6]

// ν”„λ‘œνΌν‹°λŠ” length에 영ν–₯을 주지 μ•ŠλŠ”λ‹€(!)
console.log(arr.length); // 2

λ°°μ—΄ μš”μ†Œμ˜ μ‚­μ œ

λ°°μ—΄μ˜ νŠΉμ • μš”μ†Œλ₯Ό μ‚­μ œ ν•˜κΈ° μœ„ν•΄ delete μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

const arr = [1,2,3];

//λ°°μ—΄ μš”μ†Œμ˜ μ‚­μ œ
delete arr[1];
console.log(arr); // [1, empty, 3]

//length에 영ν–₯을 주지 μ•ŠλŠ”λ‹€. ν¬μ†Œ 배열이 λœλ‹€.
console.log(arr.length); // 3

ν¬μ†Œ 배열을 λ§Œλ“€μ§€ μ•ŠμœΌλ©΄μ„œ νŠΉμ • μš”μ†Œ μ™„μ „ μ‚­μ œλ₯Ό μœ„ν•΄μ„œλŠ” splice() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

λ°°μ—΄ λ©”μ†Œλ“œ

λ°°μ—΄ λ©”μ†Œλ“œμ˜ 결과물을 λ°˜ν™˜ν•˜λŠ” νŒ¨ν„΄μ€ 두 가지이닀.

  1. 원본 배열을 직접 λ³€κ²½ν•˜λŠ” λ©”μ†Œλ“œ ex) push()
  2. 원본 λ°°μ—΄ λ³€κ²½μ•Šκ³  μƒˆλ‘œμš΄ λ°°μ—΄ μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œ ex) concat()

원본 λ°°μ—΄ 직접 λ³€κ²½ν•˜λŠ” λ©”μ†Œλ“œμ˜ 경우 μ™ΈλΆ€ μƒνƒœλ₯Ό 직접 λ³€κ²½ν•˜λŠ” λΆ€μˆ˜ νš¨κ³Όκ°€ μžˆμœΌλ―€λ‘œ μ‚¬μš©μ— 주의! 가급적 원본 λ°°μ—΄ λ³€κ²½ν•˜μ§€ μ•ŠλŠ” λ©”μ†Œλ“œ μ‚¬μš©μ΄ ꢌμž₯λœλ‹€.

Array.isArray

λ©”μ†Œλ“œμ— μ „λ‹¬λœ μΈμˆ˜κ°€ 배열이면 true, μ•„λ‹ˆλ©΄ false λ°˜ν™˜

Array.prototype.indexOf

원본 λ°°μ—΄μ—μ„œ 인수둜 μ „λ‹¬λœ μš”μ†Œλ₯Ό κ²€μƒ‰ν•˜μ—¬ 인덱슀 λ°˜ν™˜

const arr = [1, 2, 2, 3]

// λ°°μ—΄ arrμ—μ„œ μš”μ†Œ 2λ₯Ό 검색. μ€‘λ³΅λœ μš”μ†Œ 있으면 첫번째둜 κ²€μƒ‰λœ μš”μ†Œμ˜ 인덱슀 λ°˜ν™˜
arr.indexOf(2); // 1

// 배열에 인수둜 μ „λ‹¬λœ μš”μ†Œκ°€ μ—†μœΌλ©΄ -1 λ°˜ν™˜
arr.indexOf(5); // -1

// λ‘λ²ˆμ§Έ μΈμˆ˜λŠ” 검색을 μ‹œμž‘ν•  인덱슀. μƒλž΅ν•˜λ©΄ μ²˜μŒλΆ€ν„± 검색.
arr.indexOf(2, 2) // μš”μ†Œ 2λ₯Ό κ²€μƒ‰ν•˜λŠ”λ° arr[2] λΆ€ν„° κ²€μƒ‰ν•œλ‹€
		  // 2
// indexOf() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 배열에 νŠΉμ • μš”μ†Œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ°
const color = ['red', 'yellow', 'green'];

if(color.indexOf('yellow') === -1 ){ // 배열에 'yellow'κ°€ μ—†μœΌλ©΄ 
	color.push('yellow') // 'yellow' μš”μ†Œ μΆ”κ°€
}

console.log(color); // ['red', 'yellow', 'green'];

1. 원본 배열을 직접 λ³€κ²½ν•˜λŠ” λ©”μ†Œλ“œ

Array.prototype.push

인수둜 전달받은 값을 원본 λ°°μ—΄μ˜ κ°€μž₯ λ§ˆμ§€λ§‰μ— μΆ”κ°€

const arr = [1, 2];

// 인수둜 전달받은 값을 λ°°μ—΄μ˜ κ°€μž₯ λ§ˆμ§€λ§‰ μš”μ†Œλ‘œ μΆ”κ°€ν•˜κ³   length ν”„λ‘œνΌν‹° 값을 λ°˜ν™˜ν•œλ‹€.
let result = arr.push(3,4);
console.log(result); // 4

// 원본 배열을 직접 λ³€κ²½ν•œλ‹€.
console.log(arr) // [1, 2, 3, 4]

Array.prototype.pop

원본 λ°°μ—΄μ˜ λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό 제거

const arr = [1, 2];

// 원본 λ°°μ—΄μ—μ„œ λ§ˆμ§€λ§‰ μš”μ†Œ μ œκ±°ν•˜κ³  μ œκ±°ν•œ μš”μ†Œ λ°˜ν™˜
let result = arr.pop(); // 2

// pop λ©”μ†Œλ“œλŠ” 원본 λ°°μ—΄ 직접 λ³€κ²½ν•œλ‹€
console.log(arr); // [1]

Array.prototype.unshift

인수둜 전달받은 λͺ¨λ“  값을 원본 λ°°μ—΄μ˜ κ°€μž₯ 맨 μ•žμ— μΆ”κ°€

const arr = [1, 2];

console.log(arr.length); // 2

// 인수둜 전달받은 λͺ¨λ“  값을 원본 λ°°μ—΄μ˜ κ°€μž₯ 맨 μ•ž μš”μ†Œλ‘œ μΆ”κ°€
let result = arr.unshift(3,4);

// λ³€κ²½λœ length 값을 λ°˜ν™˜
console.log(result) // 4

// 원본 λ°°μ—΄ 직접 변경됨
console.log(arr) // [3,4,1,2]

Array.prototype.shift

λ°°μ—΄μ˜ 맨 첫번째 μš”μ†Œλ₯Ό 제거.

const arr = [1, 2];

let result = arr.shift();
console.log(result); // 1
										// 빈 배열이면 undefinedλ₯Ό λ°˜ν™˜ν•œλ‹€

// 원본 λ°°μ—΄ 직접 변경됨
console.log(arr); // [2]

2. 원본 λ°°μ—΄ λ³€κ²½μ•Šκ³  μƒˆλ‘œμš΄ λ°°μ—΄ μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” λ©”μ†Œλ“œ

Array.prototype.concat

인수둜 전달받은 배열을 ν•΄μ²΄ν•˜μ—¬ μƒˆλ‘œμš΄ λ°°μ—΄μ˜ λ§ˆμ§€λ§‰ μš”μ†Œλ‘œ μΆ”κ°€

concat() λ©”μ†Œλ“œλŠ” μƒˆ 배열을 λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ— λ°˜λ“œμ‹œ λ³€μˆ˜μ— λ‹΄μ•„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.



πŸ’­ 였늘 λŠλ‚€μ 

μ•„... 곡뢀할 것이 λ„ˆλ¬΄ λ§Žλ‹€..
이λ ₯μ„œλ„ μ¨μ•Όν•˜κ³  λ¦¬μ•‘νŠΈλ„ 곡뢀해야 ν•˜κ³ ..
머릿속이 λ³΅μž‘ν•˜λ‹€ μ’€ μ§€μΉœλ‹€..

일단 내일 할일을 μš°μ„ μˆœμœ„λ‘œ μ •λ¦¬ν•˜κ³  ν•˜λ‚˜μ”© μ°¨κ·Όμ°¨κ·Ό ν•΄λ‚˜κ°€μ•Όκ² λ‹€

profile
μ–Όλ ˆλ²Œλ ˆ ν”„λ‘ νŠΈμ—”λ“œ 개발자

5개의 λŒ“κΈ€

comment-user-thumbnail
2021λ…„ 12μ›” 7일

λ§žμ•„μš”. 배울게 λ§Žμ§€λ§Œ λ‚˜μ€‘μ„ μœ„ν•΄ μ§„μ§œ 쑰금만 νž˜λ‚΄λ΄μš”! πŸ‘

1개의 λ‹΅κΈ€
comment-user-thumbnail
2021λ…„ 12μ›” 7일

와 배열을 였랜 μ‹œκ°„ μ½μœΌμ‹  μ΄μœ κ°€ 정리 λ•Œλ¬Έμ΄μ—ˆκ΅°μš”?! λ©”μ†Œλ“œ 정리가 μž˜λ˜μ–΄μžˆμ–΄μ„œ λ‚˜μ€‘μ— 찾아보기 쒋을 것 κ°™μ•„μš”!! 곡뢀할 양이 λ§Žμ§€λ§Œ ν™”μš”μΌμ€ κ°•μ˜κ°€ μ—†μœΌλ‹ˆ 집쀑할 수 μžˆμ„κ±°μ—μš”πŸ’– ν™”μ΄νŒ… q(≧▽≦q)

1개의 λ‹΅κΈ€