π€ Chapter 5: λ°°μ΄κ³Ό νν
π¦ λ°°μ΄ μ΄ν΄νκΈ°β
- μλ°μ€ν¬λ¦½νΈμμ λ°°μ΄μ
Array
ν΄λμ€μ μΈμ€ν΄μ€μ΄λ€.
let array = new Array;
array.push(1);
array.push(2);
array.push(3);
console.log(array); // [1, 2, 3]
- λ°°μ΄μ λ΄κΈ΄ κ°κ° κ°μ μμ΄ν λλ μμλΌκ³ νλ€.
π []
λ¨μΆ ꡬ문β
- μλ°μ€ν¬λ¦½νΈμμλ
[]
λΌλ λ¨μΆ ꡬ문μ μ 곡νλ€.
let numbers = [1, 2, 3];
let strings = ['Hello', 'World'];
console.log(numbers, strings); // [1, 2, 3] ['Hello', 'World']
π μλ°μ€ν¬λ¦½νΈμμ λ°°μ΄μ κ°μ²΄λ€β
- μλ°μ€ν¬λ¦½νΈμμ λ°°μ΄μ κ°μ²΄μ΄λ€.
- λ°°μ΄μ
Array
ν΄λμ€μ μΈμ€ν΄μ€μΈλ°, ν΄λμ€μ μΈμ€ν΄μ€λ κ°μ²΄μ΄κΈ° λλ¬Έμ΄λ€. Array.isArray
λ 맀κ°λ³μλ‘ μ λ¬λ°μ μ¬λ²μ΄ λ°°μ΄μΈμ§ κ°μ²΄μΈμ§ μλ €μ€λ€.
let a = [1, 2, 3];
let o = { name: 'Jack', age: 32 };
console.log(Array.isArray(a), Array.isArray(o)); // true false
π λ°°μ΄μ νμ β
- νμ
μ€ν¬λ¦½νΈμμ λ°°μ΄μ νμ
μ
μμ΄ν νμ []
μ΄λ€. μλ₯Ό λ€μ΄, λ°°μ΄μ μμ΄ν μ΄number
νμ μ΄λ©΄ λ°°μ΄μ νμ μnumber[]
μ΄κ³ , μμ΄ν μ΄string
νμ μ΄λ©΄string[]
μ΄λ€.
let numArray: number[] = [1, 2, 3];
let strArray: string[] = ['Hello', 'World'];
type IPerson = { name: string, age?: number };
let personArray: IPerson[] = [
{ name: 'Jack' },
{ name: 'Jane', age: 32 },
];
// [ { name: 'Jack' }, { name: 'Jane', age: 32 } ]
π λ¬Έμμ΄κ³Ό λ°°μ΄ κ° λ³νβ
- νμ μ€ν¬λ¦½νΈμμλ λ¬Έμ νμ μ΄ μκ³ λ¬Έμμ΄μ λ΄μ© λν λ³κ²½ν μ μλ€. μ΄λ¬ν νΉμ§ λλ¬Έμ λ¬Έμμ΄μ κ°κ³΅νλ €λ©΄ λ¨Όμ λ¬Έμμ΄μ λ°°μ΄λ‘ μ νν΄μΌ νλ€.
- λ³΄ν΅ λ¬Έμμ΄μ λ°°μ΄λ‘ μ νν λλ
String
ν΄λμ€μsplit
λ©μλλ₯Ό μ¬μ©νλ€.
const split = (str: string, delim: string = ''): string[] => str.split(delim);
console.log(
split('hello'), // [ 'h', 'e', 'l', 'l', 'o' ]
split('h_e_l_l_o', '_'), // [ 'h', 'e', 'l', 'l', 'o' ]
);
string[]
νμ μ λ°°μ΄μ λ€μstring
νμ μΌλ‘ λ³ννλ €λ©΄Array
ν΄λμ€μjoin
λ©μλλ₯Ό μ¬μ©νλ€.- λ€μμ
join
λ©μλλ₯Ό μ΄μ©νλ μ¬μ©μ μ μ ν¨μjoin
μ μμ±ν μμ΄λ€.
const join = (strArray: string[], delim: string=''): string =>
strArray.join(delim);
console.log(
join(['h', 'e', 'l', 'l', 'o']), // hello
join(['h', 'e', 'l', 'l', 'o'], '_'), // h_e_l_l_o
);
π μΈλ±μ€ μ°μ°μβ
- λ°°μ΄μ΄ λ΄κ³ μλ μμ΄ν
μ€ νΉμ μμΉμ μλ μμ΄ν
μ μ»κ³ μ ν λλ μΈλ±μ€
μ°μ°μ[μΈλ±μ€]
λ₯Ό μ¬μ©νλ€.
const numbers: number[] = [1, 2, 3, 4, 5];
for(let index = 0; index < numbers.length; index++) {
const item: number = numbers[index];
console.log(item); // 1 2 3 4 5
}
π λ°°μ΄μ λΉκ΅¬μ‘°ν ν λΉβ
- λ°°μ΄μ λΉκ΅¬μ‘°ν ν λΉλ¬Έμμλ κ°μ²΄μ λ¬λ¦¬
[]
κΈ°νΈλ₯Ό μ¬μ©νλ€.
let array: number[] = [1, 2, 3, 4, 5];
let [first, second, third, ...rest] = array;
console.log(first, second, third, rest); // 1 2 3 [4, 5]
π for...in λ¬Έβ
for...in
λ¬Έμ κ°μ²΄λ₯Ό λμμΌλ‘ μ¬μ©νμ§λ§ λ°°μ΄λ κ°μ²΄μ΄λ―λ‘ λ°°μ΄μμ μ¬μ©ν μ μλ€.
let names = ['Jack', 'Jane', 'Steve'];
for (let index in names) {
const name = names[index];
console.log(`[${index}]: ${name}`); // [0]: Jack [1]: Jane [2]: Steve
}
- λ§μ½
for...in
λ¬Έμ κ°μ²΄λ₯Ό μ¬μ©ν λλ κ°μ²΄κ° κ°μ§ μμ±μ λμμΌλ‘ μννλ€.
let jack = { name: 'Jack', age: 32 };
for(let property in jack) {
console.log(`${property}: ${jack[property]}`); // name: 'Jack' age: 32
}
π for...of λ¬Έβ
for...in
λ¬Έμ λ°°μ΄μ μΈλ±μ€κ°μ λμμΌλ‘ μννμ§λ§,for...of
λ¬Έμ λ°°μ΄μ μμ΄ν κ°μ λμμΌλ‘ μννλ€.
for(let name of ['Jack', 'Jane', 'Steve'])
console.log(name); // Jack Jane Steve
π μ λ€λ¦ λ°©μ νμ β
- λ°°μ΄μ λ€λ£¨λ ν¨μλ₯Ό μμ±ν λλ
number[]
μ κ°μ΄ νμ μ΄ κ³ μ λ ν¨μλ₯Ό λ§λ€κΈ°λ³΄λ€λT[]
ννλ‘ λ°°μ΄μ μμ΄ν νμ μ νκΊΌλ²μ νννλ κ²μ΄ νΈλ¦¬νλ€. - νμ
μ
T
μ κ°μ μΌμ’ μ λ³μλ‘ μ·¨κΈνλ κ²μ μ λ€λ¦(generics) νμ μ΄λΌκ³ νλ€.
const arrayLength = (array: T[]): number => array.length;
- κ·Έλ°λ° μ΄λ κ² νλ©΄ μ»΄νμΌλ¬κ°
T
μ μλ―Έλ₯Ό μ μ μμ΄μΌ νλ€. - μ¦,
T
κ° νμ λ³μλΌκ³ μλ €μ€μΌ ν λ€.
export const arrayLength = <T>(array: T[]): number => array.length;
export const isEmpty = <T>(array: T[]): boolean => arrayLength<T>(array) == 0;
- μ λ€λ¦ ν¨μλ‘ κ΅¬ννμΌλ―λ‘ λ€μν λ°°μ΄ νμ μ λͺ¨λ μ μμ μΌλ‘ λμνλ κ²μ λ³Ό μ μλ€.
import { arrayLength, isEmpty } from "./arrayLength";
let numArray: number[] = [1, 2, 3];
let strArray: string[] = ['Hello', 'World'];
type IPerson = {
name: string,
age?: number,
};
let personArray: IPerson[] = [
{ name: 'Jack'},
{ name: 'Jane', age: 32 },
];
console.log(
arrayLength(numArray), // 3
arrayLength(strArray), // 2
arrayLength(personArray), // 2
isEmpty([]), // true
isEmpty([1]), // false
);