μλ°μ€ν¬λ¦½νΈμ λ°°μ΄ ν¨μλ λ°μ΄ν° μ²λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ ν μ μκ² λμμ£Όλ μ€μν λꡬμ λλ€. μ΄λ² ν¬μ€ν μμλ μμ£Ό μ¬μ©λλ μλ°μ€ν¬λ¦½νΈ λ°°μ΄ ν¨μλ€μ μ 리νκ³ , κ°κ°μ ν¨μκ° μ΄λ€ μν©μμ μ μ©νμ§μ λν΄ μ΄ν΄λ³΄κ² μ΅λλ€.
β£ λͺ©μ°¨
μλ°μ€ν¬λ¦½νΈ λ°°μ΄μ μ°Έμ‘° μλ£νμ
λλ€. κΈ°λ³Έ μλ£ν(primitive types)κ³Ό μ°Έμ‘° μλ£ν(reference types)μ μλ°μ€ν¬λ¦½νΈμμ λ°μ΄ν°λ₯Ό λ€λ£¨λ λ°©μμ λ°λΌ ꡬλΆλ©λλ€. μλ°μ€ν¬λ¦½νΈ μλ£νμ λν λ΄μ©μ μλ ν¬μ€ν
μ μ°Έκ³ ν΄ μ£ΌμΈμπ
01. JavaScript λ°°μ΄μ΄λ?π€
λ°°μ΄μ μ μμ κΈ°λ³Έ κ°λ
JavaScriptμμ λ°°μ΄μ κ°μ νμ λλ λ€λ₯Έ νμ μ μ¬λ¬ λ°μ΄ν°λ₯Ό ν κ³³μ λͺ¨μλ ꡬ쑰μ λλ€. λ°°μ΄μ μΌλ ¨μ λ°μ΄ν°λ₯Ό μμλλ‘ λμ΄νκ³ , μΈλ±μ€λ₯Ό ν΅ν΄ κ° μμμ μ κ·Όν μ μκ² ν΄ μ€λλ€. λ°°μ΄μ λ€λ₯Έ νλ‘κ·Έλλ° μΈμ΄μμλ νν μ¬μ©λλ λ°μ΄ν° ꡬ쑰λ‘, JavaScriptμμλ νΉν λ§μ΄ νμ©λ©λλ€.
λ°°μ΄μ μ¬μ©νλ μ΄μ
λ°°μ΄μ μ¬μ©νλ©΄ μ¬λ¬ κ°μ λ³μλ₯Ό μ¬μ©νμ§ μκ³ λ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ μ‘°μν μ μμ΅λλ€. λ°°μ΄μ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ μ μ₯νκ³ μ κ·Όν μ μκ² ν΄μ£Όλ©°, λ€μν λ©μλλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μ½κ² μ‘°μν μ μμ΅λλ€.
JavaScript λ°°μ΄μ νΉμ§
- λμ ν¬κΈ°: JavaScript λ°°μ΄μ ν¬κΈ°κ° κ³ μ λμ΄ μμ§ μκ³ , νμμ λ°λΌ λμ μΌλ‘ ν¬κΈ°κ° λ³ν©λλ€.
- λ€μν νμ νμ©: JavaScript λ°°μ΄μ μ«μ, λ¬Έμμ΄, κ°μ²΄ λ± λ€μν νμ μ μμλ₯Ό ν¨κ» μ μ₯ν μ μμ΅λλ€.
- λ°°μ΄ λ©μλ: λ°°μ΄μ λ€μν λ΄μ₯ λ©μλλ₯Ό μ 곡νμ¬ λ°μ΄ν°λ₯Ό μ½κ² μ‘°μν μ μμ΅λλ€.
02. λ°°μ΄ μμ± λ°©λ²π¨
λ°°μ΄ λ¦¬ν°λ΄μ μ¬μ©ν μμ±
κ°μ₯ κ°λ¨ν λ°°μ΄ μμ± λ°©λ²μ λ°°μ΄ λ¦¬ν°λ΄μ μ¬μ©νλ κ²μ λλ€. λκ΄νΈ []λ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μμ±νκ³ , κ° μμλ μΌνλ‘ κ΅¬λΆν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
Array κ°μ²΄λ₯Ό μ¬μ©ν μμ±
Array κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μμ±ν μλ μμ΅λλ€. μ΄ λ°©λ²μ λ°°μ΄μ μ΄κΈ° ν¬κΈ°λ₯Ό μ€μ ν μ μμ΅λλ€.
let numbers = new Array(3); // κΈΈμ΄κ° 3μΈ λΉ λ°°μ΄ μμ±
let moreFruits = new Array('Mango', 'Peach', 'Pineapple');
Array.of()μ Array.from() λ©μλ
- Array.of() λ©μλλ μ λ¬λ μΈμλ₯Ό μμλ‘ κ°λ λ°°μ΄μ μμ±ν©λλ€.
let arrayOfNumbers = Array.of(1, 2, 3);
- Array.from() λ©μλλ μ μ¬ λ°°μ΄ κ°μ²΄λ λ°λ³΅ κ°λ₯ν κ°μ²΄λ₯Ό λ°°μ΄λ‘ λ³νν©λλ€.
let arrayFromString = Array.from('hello'); // ['h', 'e', 'l', 'l', 'o']
03. λ°°μ΄ μμ μ κ·Ό λ° μ‘°μπ οΈ
λ°°μ΄ μμ μ κ·Ό λ°©λ² (μΈλ±μ€ μ¬μ©)
λ°°μ΄μ κ° μμλ 0λΆν° μμνλ μΈλ±μ€λ‘ μ κ·Όν μ μμ΅λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
console.log(fruits[0]); // 'Apple'
console.log(fruits[1]); // 'Banana'
λ°°μ΄ μμ μΆκ° λ° μμ
push(): λ§μ§λ§ μμ μΆκ°
- push(): ν¨μλ λ°°μ΄μ λ§μ§λ§μ μλ‘μ΄ μμλ₯Ό μΆκ°ν©λλ€. λ°μ΄ν°λ₯Ό μμ°¨μ μΌλ‘ μΆκ°ν λ μ μ©ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.push('Mango'); // ['Apple', 'Banana', 'Cherry', 'Mango']
pop(): λ§μ§λ§ μμ μμ
- pop(): ν¨μλ λ°°μ΄μ λ§μ§λ§ μμλ₯Ό μ κ±°ν©λλ€. μ΅κ·Όμ μΆκ°λ λ°μ΄ν°λ₯Ό μμ ν λ μ μ©ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.pop(); // ['Apple', 'Banana']
unshift(): 첫 λ²μ§Έ μμ μΆκ°
- unshift(): ν¨μλ λ°°μ΄μ 첫 λ²μ§Έμ μλ‘μ΄ μμλ₯Ό μΆκ°ν©λλ€. μλ‘μ΄ λ°μ΄ν°λ₯Ό μ΅μ°μ μΌλ‘ μΆκ°ν λ μ μ©ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.unshift('Strawberry'); // ['Strawberry', 'Apple', 'Banana', 'Cherry']
shift(): 첫 λ²μ§Έ μμ μμ
- shift(): ν¨μλ λ°°μ΄μ 첫 λ²μ§Έ μμλ₯Ό μ κ±°ν©λλ€. κ°μ₯ μ€λλ λ°μ΄ν°λ₯Ό μ κ±°ν λ μ μ©ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.shift(); // ['Banana', 'Cherry']
λ°°μ΄ μμ μμ
λ°°μ΄μ μμλ₯Ό μμ νλ €λ©΄ ν΄λΉ μΈλ±μ€λ₯Ό μ¬μ©ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits[1] = 'Blueberry'; // ['Apple', 'Blueberry', 'Cherry']
λ°°μ΄ λ³΅μ¬ λ° νμ₯ (...)
Spread Operator(...)λ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μ½κ² 볡μ¬νκ³ νμ₯ν μ μμ΅λλ€. κΈ°μ‘΄ λ°°μ΄μ λ³κ²½νμ§ μκ³ μλ‘μ΄ λ°°μ΄μ λ§λ€ λ μ μ©ν©λλ€.
let fruits = ['μ¬κ³Ό', 'λ°λλ', '체리'];
let copiedFruits = [...fruits];
console.log(copiedFruits); // ['μ¬κ³Ό', 'λ°λλ', '체리']
04. μμ£Ό μ¬μ©νλ λ°°μ΄ λ©μλπ
forEach(): λ°°μ΄ μν
forEach() λ©μλλ λ°°μ΄μ κ° μμμ λν΄ μ£Όμ΄μ§ ν¨μλ₯Ό μ€νν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.forEach(function(fruit) {
console.log(fruit);
});
map(): λ°°μ΄ μμ λ³ν
map() λ©μλλ λ°°μ΄μ κ° μμμ λν΄ μ£Όμ΄μ§ ν¨μλ₯Ό μ€ννκ³ , κ·Έ κ²°κ³Όλ₯Ό λͺ¨μ μλ‘μ΄ λ°°μ΄μ λ°νν©λλ€.
let fruits = ["체리", "μ¬κ³Ό", "λ°λλ"];
let mappedFruits = fruits.map(fruit => `fruit: ${fruit}`);
console.log(mappedFruits); // ["fruit: 체리", "fruit: μ¬κ³Ό", "fruit: λ°λλ"]
filter(): 쑰건μ λ§λ μμ νν°λ§
filter() λ©μλλ λ°°μ΄μ κ° μμμ λν΄ μ£Όμ΄μ§ 쑰건μ λ§μ‘±νλ μμλ§ λͺ¨μ μλ‘μ΄ λ°°μ΄μ λ°νν©λλ€.
let words = ["apple", "banana", "cherry", "date", "fig", "grape"];
let longWords = words.filter(word => word.length >= 5);
console.log(longWords); // ["apple", "banana", "cherry", "grape"]
reduce(): λ°°μ΄ κ° λμ
reduce() λ©μλλ λ°°μ΄μ κ° μμμ λν΄ μ£Όμ΄μ§ ν¨μλ₯Ό μ€ννκ³ , κ·Έ κ²°κ³Όλ₯Ό νλμ κ°μΌλ‘ λμ ν©λλ€.
let numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15
find()μ findIndex(): 쑰건μ λ§λ μμ μ°ΎκΈ°
- find() λ©μλλ 쑰건μ λ§μ‘±νλ 첫 λ²μ§Έ μμλ₯Ό λ°νν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
let cherry = fruits.find(function(fruit) {
return fruit === 'Cherry';
}); // 'Cherry'
- findIndex() λ©μλλ 쑰건μ λ§μ‘±νλ 첫 λ²μ§Έ μμμ μΈλ±μ€λ₯Ό λ°νν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
let cherryIndex = fruits.findIndex(function(fruit) {
return fruit === 'Cherry';
}); // 2
05. κ³ κΈ λ°°μ΄ λ©μλμ νμ©λ²π
some()κ³Ό every(): 쑰건 κ²μ¬
- some() λ©μλλ λ°°μ΄μ μΌλΆ μμκ° μ‘°κ±΄μ λ§μ‘±νλμ§ κ²μ¬ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
let hasShortFruit = fruits.some(function(fruit) {
return fruit.length < 5;
}); // false
- every() λ©μλλ λ°°μ΄μ λͺ¨λ μμκ° μ‘°κ±΄μ λ§μ‘±νλμ§ κ²μ¬ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
let allLongFruits = fruits.every(function(fruit) {
return fruit.length > 5;
}); // false
sort(): λ°°μ΄ μ λ ¬
- sort() λ©μλλ λ°°μ΄μ μ λ ¬ν©λλ€. κΈ°λ³Έμ μΌλ‘ μ¬μ μμΌλ‘ μ λ ¬λλ©°, μνλ μ λ ¬ μμλ₯Ό λΉκ΅ ν¨μλ₯Ό ν΅ν΄ μ§μ ν μ μμ΅λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.sort(); // ['Apple', 'Banana', 'Cherry']
- μ¬μ©μ μ μ μ λ ¬ λΉκ΅ ν¨μ μμ
μ¬μ©μ μ μ μ λ ¬ λΉκ΅ ν¨μλ JavaScriptμ sort() λ©μλμμ μ¬μ©λμ΄ λ°°μ΄ μμλ₯Ό μνλ λ°©μμΌλ‘ μ λ ¬νλ λ° μ€μν μν μ ν©λλ€. μ΄ ν¨μλ λ κ°μ μΈμ(aμ b)λ₯Ό λ°μμ λ€μ μΈ κ°μ§ κ²½μ° μ€ νλμ λ°λΌ λμν΄μΌ ν©λλ€.
- μμ λ°ν: aλ₯Ό bλ³΄λ€ μμ μμΉμν€κ³ μΆμ λ.
- μμ λ°ν: aλ₯Ό bλ³΄λ€ λ€μ μμΉμν€κ³ μΆμ λ.
- λ°ν: aμ bμ μμλ₯Ό λ³νμν€μ§ μκ³ κ·Έλλ‘ λκ³ μΆμ λ.
μ΄λ¬ν λΉκ΅ ν¨μλ₯Ό μ μνλ©΄ sort() λ©μλκ° μ΄ ν¨μλ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μ λ ¬νκ² λ©λλ€.
μμ : μ«μ λ°°μ΄μ μ€λ¦μ°¨μ μ λ ¬
let numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
numbers.sort(function(a, b) {
if (a < b) {
return -1; // aλ₯Ό bλ³΄λ€ μμ μμΉμν΄
}
if (a > b) {
return 1; // aλ₯Ό bλ³΄λ€ λ€μ μμΉμν΄
}
return 0; // μμλ₯Ό λ³νμν€μ§ μμ
});
console.log(numbers); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
μμ μ½λμμ sort() λ©μλλ λΉκ΅ ν¨μλ₯Ό ν΅ν΄ numbers λ°°μ΄μ μ€λ¦μ°¨μμΌλ‘ μ λ ¬ν©λλ€. aκ° bλ³΄λ€ μμ λλ -1μ λ°ννμ¬ aλ₯Ό bλ³΄λ€ μμ μμΉμν€κ³ , aκ° bλ³΄λ€ ν΄ λλ 1μ λ°ννμ¬ aλ₯Ό bλ³΄λ€ λ€μ μμΉμν΅λλ€. κ°μ κ²½μ°μλ 0μ λ°ννμ¬ μμλ₯Ό λ³νμν€μ§ μμ΅λλ€.
μμ : μ«μ λ°°μ΄μ λ΄λ¦Όμ°¨μ μ λ ¬
numbers.sort(function(a, b) {
if (a > b) {
return -1; // aλ₯Ό bλ³΄λ€ μμ μμΉμν΄ (λ΄λ¦Όμ°¨μ)
}
if (a < b) {
return 1; // aλ₯Ό bλ³΄λ€ λ€μ μμΉμν΄ (λ΄λ¦Όμ°¨μ)
}
return 0; // μμλ₯Ό λ³νμν€μ§ μμ
});
console.log(numbers); // [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
μμ μ½λμμλ κ°μ λ°°μ΄μ λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬νλλ‘ λΉκ΅ ν¨μλ₯Ό μμ νμ΅λλ€. aκ° bλ³΄λ€ ν΄ λ -1μ λ°ννμ¬ aλ₯Ό bλ³΄λ€ μμ μμΉμν€κ³ , aκ° bλ³΄λ€ μμ λ 1μ λ°ννμ¬ aλ₯Ό bλ³΄λ€ λ€μ μμΉμν΅λλ€. λ§μ°¬κ°μ§λ‘ κ°μ κ²½μ°μλ 0μ λ°ννμ¬ μμλ₯Ό λ³νμν€μ§ μμ΅λλ€.
reverse(): λ°°μ΄ μ λ ¬
- reverse() λ©μλλ λ°°μ΄μ μμ μμλ₯Ό λ°λλ‘ λ€μ§μ΅λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.reverse(); // ['Cherry', 'Banana', 'Apple']
concat(): λ°°μ΄ ν©μΉκΈ°
- concat() λ©μλλ λ κ° μ΄μμ λ°°μ΄μ ν©μ³ μλ‘μ΄ λ°°μ΄μ λ§λλλ€.
let fruits = ['Apple', 'Banana'];
let moreFruits = ['Cherry', 'Mango'];
let allFruits = fruits.concat(moreFruits); // ['Apple', 'Banana', 'Cherry', 'Mango']
slice()μ splice(): λ°°μ΄ λΆλΆ μΆμΆ λ° λ³κ²½
- slice() λ©μλλ λ°°μ΄μ μΌλΆλ₯Ό μΆμΆνμ¬ μλ‘μ΄ λ°°μ΄μ λ§λλλ€.
let fruits = ['Apple', 'Banana', 'Cherry', 'Mango'];
let someFruits = fruits.slice(1, 3); // ['Banana', 'Cherry']
- splice() λ©μλλ λ°°μ΄μ μΌλΆλ₯Ό μμ νκ±°λ κ΅μ²΄ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
fruits.splice(1, 1, 'Blueberry'); // ['Apple', 'Blueberry', 'Cherry']
06. λ°°μ΄κ³Ό κ΄λ ¨λ μ μ©ν νπ
λ€μ°¨μ λ°°μ΄ λ€λ£¨κΈ°
JavaScriptμμλ λ°°μ΄ μμ λ°°μ΄μ ν¬ν¨μμΌ λ€μ°¨μ λ°°μ΄μ λ§λ€ μ μμ΅λλ€.
let matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
console.log(matrix[1][2]); // 6
λ°°μ΄μ λ¬Έμμ΄λ‘ λ³ν (join, toString)
- join() λ©μλλ λ°°μ΄μ λͺ¨λ μμλ₯Ό λ¬Έμμ΄λ‘ κ²°ν©ν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
let fruitString = fruits.join(', '); // 'Apple, Banana, Cherry'
- toString() λ©μλλ λ°°μ΄μ λ¬Έμμ΄λ‘ λ³νν©λλ€.
let fruits = ['Apple', 'Banana', 'Cherry'];
let arrayString = fruits.toString(); // 'Apple,Banana,Cherry'
μ±λ₯ μ΅μ νλ₯Ό μν ν
- λ°°μ΄ ν¬κΈ°λ₯Ό μμΈ‘ν μ μλ€λ©΄ μ΄κΈ° ν¬κΈ°λ₯Ό μ€μ νμ¬ μ±λ₯μ μ΅μ νν μ μμ΅λλ€.
- for 루νλ₯Ό μ¬μ©ν λλ length νλ‘νΌν°λ₯Ό 미리 μ μ₯ν΄ λλ©΄ μ±λ₯μ΄ ν₯μλ©λλ€.
μλ₯Ό λ€μ΄, JavaScriptμμ λ°°μ΄μ μνν λ for 루νλ₯Ό μ¬μ©νλ κ²½μ°, length νλ‘νΌν°λ₯Ό 미리 μ μ₯ν΄ λλ©΄ λ°λ³΅ν λ μ±λ₯μ΄ ν₯μλ μ μμ΅λλ€. μ΄λ 맀 λ°λ³΅λ§λ€ λ°°μ΄μ κΈΈμ΄λ₯Ό λ€μ κ³μ°νλ λΉμ©μ μ€μ΄κΈ° λλ¬Έμ λλ€.
λ€μμ for 루νλ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μνν λ length νλ‘νΌν°λ₯Ό 미리 μ μ₯νλ μμ μ λλ€.
let fruits = ['μ¬κ³Ό', 'λ°λλ', '체리'];
// λ°°μ΄μ κΈΈμ΄λ₯Ό 미리 μ μ₯
let len = fruits.length;
// μΌλ°μ μΈ for 루ν μ¬μ©
for (let i = 0; i < len; i++) {
console.log(fruits[i]);
}
μ΄ μμ μμλ fruits.lengthλ₯Ό len λ³μμ μ μ₯ν ν for 루νμμ μ΄ λ³μλ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μνν©λλ€. μ΄λ κ² νλ©΄ 맀 λ°λ³΅λ§λ€ λ°°μ΄μ κΈΈμ΄λ₯Ό κ³μ°νλ λΉμ©μ νΌν μ μμ΄μ μ±λ₯μ΄ κ°μ λ μ μμ΅λλ€.
07. ν΅μ¬ λ΄μ©π