๐Ÿ“ฆ ๋ฐฐ์—ด์ด๋ž€?

์–ธ์ง€ยท2025๋…„ 4์›” 15์ผ

๐Ÿ“ฆ ๋ฐฐ์—ด์ด๋ž€?

  • ์—ฌ๋Ÿฌ ๊ฐ’(Entity) ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ดํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
  • ๋ฐฐ์—ด ๋‚ด ๊ฐ ๊ฐ’์€ ์š”์†Œ(element) ๋ผ๊ณ  ํ•˜๋ฉฐ, ์ธ๋ฑ์Šค(index)๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ


๐Ÿ› ๏ธ ๋Œ€ํ‘œ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ

โœ”๏ธ ๋ฐฐ์—ด ํฌ๊ธฐ ๋ฐ ๋ฐฐ์—ด ์—ฌ๋ถ€ ํ™•์ธ

  • Array.length
  • Array.isArray(value)

โœ”๏ธ ๋ฐฐ์—ด ์ถ”๊ฐ€/์‚ญ์ œ

  • push(), pop()
  • shift(), unshift()
  • splice(), slice()

โœ”๏ธ ๋ฐฐ์—ด ํƒ์ƒ‰

  • indexOf(), lastIndexOf()
  • includes()

โœ”๏ธ ๋ฐฐ์—ด ๋ณ€ํ˜• (callback ๋ฏธ์‚ฌ์šฉ)

  • sort(), reverse(), join()

๐Ÿ“Œ ๋ฐฐ์—ด ์„ ์–ธ, ์ ‘๊ทผ, ์†์„ฑ

โœ… ์„ ์–ธ

"new Array()" ํ˜น์€ "[]"๋ฅผ ํ†ตํ•ด ์„ ์–ธํ•˜๋ฉฐ, ์‚ฌ์ด์ฆˆ ํ˜น์€ ๊ฐ’์„ ์ž…๋ ฅํ•˜์—ฌ ์ดˆ๊ธฐํ™”๋„ ๊ฐ€๋Šฅ

let arr_1 = new Array(10);
let arr_2 = [];

console.log(arr_1);
console.log(arr_2);

let fruits = ["apple", "orange", "melon"];
console.log(fruits);

โœ… ์ ‘๊ทผ

"Array[index]" ๋ฅผ ํ†ตํ•ด index๋ฅผ ํ†ตํ•˜์—ฌ O(1) ์ ‘๊ทผ

console.log(fruits[0]); // apple
console.log(fruits[1]); // orange
console.log(fruits[2]); // melon

โœ… ๊ธธ์ด ํ™•์ธ

"Array.length" ๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ฐœ์ˆ˜ ํ™•์ธ ๊ฐ€๋Šฅ

console.log(fruits.length); // 3

โœ… ๊ฐ’ ๋ณ€๊ฒฝ

fruits[1] = "kiwi"; 
console.log(fruits); // ["apple", "kiwi", "melon"]

๐Ÿงฌ ๋ฐฐ์—ด์˜ ์‹ค์ฒด (ํ•ด์‹œ ๊ธฐ๋ฐ˜ ๊ฐ์ฒด)

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด์€ ์ผ๋ฐ˜ ๋ฐฐ์—ด์ด ์•„๋‹Œ Hash ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด

  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋น„์—ฐ์†์ ์ธ ํฌ์†Œ ๋ฐฐ์—ด(sparse array) ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋จ

    let nums = [];
    
    nums[0] = "one";
    nums[1] = "two";
    
    console.log(nums.length);
    console.log(nums);
    let nums = [];
    
    nums[0] = "one";
    nums[1] = "two";
    
    nums["once"] = "once";
    nums["twice"] = "twice";
    
    console.log(nums.length);
    console.log(nums);
    
    console.log(Object.getOwnPropertyDescriptors(nums));

nums[0], nums[1] ์€ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฑ„์šด ๊ฒƒ์ด๊ณ 
nums["once"], nums["twice"] ์€ ๊ฐ์ฒด ์†์„ฑ(ํ‚ค)๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์„œ ๊ธธ์ด๊ฐ€ 2์ธ๊ฒƒ ์€ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ณ  ๋น„์—ฐ์†์ ์ธ ํฌ์†Œ ๋ฐฐ์—ด๋กœ ์ƒ์„ฑ๋œ ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค


๐Ÿ” ๋ฐฐ์—ด ํƒ€์ž… ํ™•์ธ

  • Array.isArray(value)

    let num = 123.456;
    let str = "here i am";
    let fruits = ["apple", "orange", "melon"];
    
    console.log(Array.isArray(num)); //false
    console.log(Array.isArray(str)); //false
    console.log(Array.isArray(fruits)); // true

โŒ ๋ฐฐ์—ด ์ผ๋ถ€ ์š”์†Œ ์‚ญ์ œ

  • delete array[index]
    โžก๏ธ ์š”์†Œ๋ฅผ ์‚ญ์ œ๋ฅผ ํ•ด๋„ ๋ฐฐ์—ด ์‚ฌ์ด์ฆˆ๊ฐ€ ๊ทธ๋Œ€๋กœ์ธ ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค

    let fruits = ["apple", "orange", "melon"];
    
    console.log(fruits);
    console.log(fruits.length);
    
    delete fruits[1];
    
    console.log(fruits);
    console.log(fruits.length);

๐Ÿ” ๋ฐฐ์—ด ์ถ”๊ฐ€/์‚ญ์ œ

๐Ÿ”ธ LIFO (Last-In First-Out) - Back

  • Array.push(element) // ์ถ”๊ฐ€

  • Array.pop() // ์‚ญ์ œ

    let fruits = ["apple", "orange", "melon"];
    
    fruits.push("watermelon");
    console.log(fruits); // [ 'apple', 'orange', 'melon', 'watermelon']
    console.log(fruits.length); // 4
    
    fruits.pop();
    console.log(fruits); // [ 'apple', 'orange', 'melon' ]
    console.log(fruits.length); // 3
    

๐Ÿ”ธ LIFO (Last-In First-Out) - Front

  • Array.unshift(element) // ์ถ”๊ฐ€

  • Array.shift() // ์‚ญ์ œ

    let fruits = ["apple", "orange", "melon"];
    
    fruits.unshift("watermelon");
    console.log(fruits); // [ 'watermelon', 'apple', 'orange', 'melon' ]
    console.log(fruits.length); // 4
    
    fruits.shift();
    console.log(fruits); // [ 'apple', 'orange', 'melon' ]
    console.log(fruits.length); // 3
    

โœ‚๏ธ ๋ฐฐ์—ด ์š”์†Œ ์‚ญ์ œ/์‚ฝ์ž…

โœ”๏ธ Array.slice(index[,deleteCount, elem1, ... , elemN])

let fruits = ["apple", "orange", "melon"];
let ret;

ret = fruits.splice(1); 
console.log(ret); // [ 'orange', 'melon' ]
console.log(fruits); // [ 'apple' ]

fruits = ["apple", "orange", "melon", "strawberry"];
ret = fruits.splice(1, 1);
console.log(ret); // [ 'orange' ]
console.log(fruits); // [ 'apple', 'melon', 'strawberry' ]

ret = fruits.splice(1, 1, "mango", "kiwi"); // melon ์œ„์น˜์— "mango", "kiwi"๊ฐ€
console.log(ret); // [ 'melon' ]
console.log(fruits); // [ 'apple', 'mango', 'kiwi', 'strawberry' ]

โœ”๏ธ slice(start, end) - ์›๋ณธ ์œ ์ง€

let fruits = ["apple", "orange", "melon"];

console.log(fruits.slice(1)); // [ 'orange', 'melon' ]
console.log(fruits); // [ 'apple', 'orange', 'melon' ]
 
console.log(fruits.slice(1, 2)); // [ 'orange' ]
console.log(fruits.slice(-2)); // [ 'orange', 'melon' ]

โœ”๏ธ Array.concat(arg1, arg2)

let fruits = ["apple", "orange", "melon"];
let fruits_add = ["cherry", "banana"];

console.log(fruits.concat(fruits_add)); // [ 'apple', 'orange', 'melon', 'cherry', 'banana' ]
console.log(fruits); // [ 'apple', 'orange', 'melon' ]

๐Ÿ” ๋ฐฐ์—ด ๋ฐ˜๋ณต๋ฌธ

  • ๋‹ค์–‘ํ•œ ๋ฐ˜๋ณต๋ฌธ ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋ฐ˜๋ณต๋ฌธ ๋ฌธ๋ฒ•
    โ€ข for + length: index ์ ‘๊ทผ
    โ€ข for...of: element ์ ‘๊ทผ
    โ€ข for...in: key(index) ์ ‘๊ทผ
let fruits = ["apple", "orange", "melon"];

for (let i = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
  // apple
  // orange
  // melon
}

for (let fruit of fruits) {
  console.log(fruit);
  // apple
  // orange
  // melon
}

for (let key in fruits) {
  console.log(key);
  // 0
  // 1
  // 2
  console.log(fruits[key]);
  // apple
  // orange
  // melon
}

๐Ÿ” ๋ฐฐ์—ด ํƒ์ƒ‰

  • indexํƒ์ƒ‰(์•ž์—์„œ๋ถ€ํ„ฐ) : Array.indexOf(item, from)
  • indexํƒ์ƒ‰(๋’ค์—์„œ๋ถ€ํ„ฐ) : Array.lastIndexOf(item, from)
  • ๊ฐ’ ํฌํ•จ ์—ฌ๋ถ€ ํ™•์ธ(true/fasle) : Array.includes(item,from)
let fruits = ["apple", "orange", "banana", "orange", "melon"];

console.log(fruits.indexOf("orange")); // 1
console.log(fruits.indexOf("Orange")); // -1 : ๋ฐฐ์—ด ๋‚ด์— ์—†๋‹ค
console.log(fruits.indexOf("orange", 2)); // 3

console.log(fruits.lastIndexOf("orange")); // 3
console.log(fruits.lastIndexOf("orange", -3)); // 1
console.log(fruits.lastIndexOf("orange", 0)); // -1

console.log(fruits.includes("banana")); // true
console.log(fruits.includes("watermelon")); // false
console.log(fruits.includes("Banana")); // false

๐Ÿ”ƒ ๋ฐฐ์—ด ์ •๋ ฌ / ๋ฐ˜์ „

โžก๏ธ sort()์™€ reverse()๋Š” ์›๋ณธ ๋ฐฐ์—ด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•จ

  • ๋ฐฐ์—ด ์ •๋ ฌ : Array.sort()
  • ๋ฐฐ์—ด ๋ฐ˜์ „ : Array.reverse()
let nums = [1, -1, 4, 5, 2, 0];

console.log(nums.sort()); // [ -1, 0, 1, 2, 4, 5 ] ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ nums๋ฅผ
console.log(nums.reverse()); // [ 5, 4, 2, 1, 0, -1 ] ๋ฐ˜์ „์‹œํ‚จ ํ˜•ํƒœ
console.log(nums); // [ 5, 4, 2, 1, 0, -1 ]

let fruits = ["apple", "orange", "banana", "melon"];

console.log(fruits.sort()); // [ 'apple', 'banana', 'melon', 'orange' ]
console.log(fruits.reverse()); // [ 'orange', 'melon', 'banana', 'apple' ]
console.log(fruits); // [ 'orange', 'melon', 'banana', 'apple' ]

๐Ÿ”„ ๋ฐฐ์—ด ๋ณ€ํ™˜

โžก๏ธ ์›๋ณธ ๋ฐ์ดํ„ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

  • ๋ฐฐ์—ด ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ : Array.join(separator)
let fruits = ["apple", "orange", "banana", "melon"];
let str = fruits.join();
console.log(str); // apple,orange,banana,melon โžก๏ธ ","๊ฐ€ ๊ธฐ๋ณธ๊ฐ’

let str_separator = fruits.join(";");
console.log(str_separator); // apple;orange;banana;melon

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