λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JavaScript

λ°°μ—΄

by ν•΄-온 2023. 2. 26.

πŸ§€ λ°°μ—΄

μ—¬λŸ¬ 개의 값을 순차적으둜 λ‚˜μ—΄ν•œ 자료ꡬ쑰.

λ°°μ—΄ μ•ˆμ—λŠ” μš”μ†Œλ₯Ό 가지고 있고, 각 μš”μ†ŒλŠ” λ°°μ—΄ μ•ˆμ—μ„œ 인덱슀λ₯Ό 가지고 μžˆλ‹€.

μΈλ±μŠ€λŠ” 0λΆ€ν„° μ‹œμž‘ν•˜κ³ , 각 μš”μ†Œμ˜ 인덱슀λ₯Ό μ‚¬μš©ν•˜λ©΄ μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆλ‹€.

 

const arr = ['a', 'b', 'c'];

arr[0]; //a
arr[1]; //b
arr[2]; //c

 

πŸ§€ λ°°μ—΄ 생성

배열은 λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 생성할 수 μžˆλ‹€.

 

const array1 = new Array(1, 2);
console.log(array1); //[ 1, 2 ]

const array2 = Array.of(1, 2);
console.log(array2); //[ 1, 2 ]

const array3 = [1, 2];
console.log(array3); //[ 1, 2 ]

const array4 = Array.from(array2); //[ 1, 2 ]
console.log(array4);

 

πŸ§€ λ°°μ—΄ μš”μ†Œ μ°Έμ‘°

λ°°μ—΄ μš”μ†Œλ₯Ό μ°Έμ‘°ν•  λ•ŒλŠ” λŒ€κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•œλ‹€.

μš”μ†Œλ§ˆλ‹€ μΈλ±μŠ€κ°€ 있기 λ•Œλ¬Έμ— λŒ€κ΄„ν˜Έμ— 인덱슀λ₯Ό λ„£μ–΄ μ‚¬μš©ν•œλ‹€.

λ§Œμ•½ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” μš”μ†Œμ— μ ‘κ·Όν•œλ‹€λ©΄ undefinedκ°€ λ°˜ν™˜λœλ‹€.

λ˜ν•œ, λ°°μ—΄ μš”μ†Œ 전뢀에 μ ‘κ·Όν•˜κ³  μ‹Άλ‹€λ©΄ for문을 μ‚¬μš©ν•  수 μžˆλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

console.log(food[1]); //πŸ•
console.log(food[5]); //undefined

for (let i = 0; i < food.length; i++) {
  console.log(food[i]);
  //🍜
  //πŸ•
  //πŸ”
}

 

πŸ§€ λ°°μ—΄ μš”μ†Œμ˜ λ³€κ²½

배열에 μš”μ†Œλ₯Ό μΆ”κ°€, κ°±μ‹ , μ‚­μ œν•  수 μžˆλ‹€.

λ§Œμ•½ 배열에 μš”μ†Œκ°€ μžˆλŠ” 인덱슀λ₯Ό μ‚¬μš©ν•˜λ©΄ μš”μ†Œκ°€ κ°±μ‹ λ˜κ³ ,

μ—†λŠ” 인덱슀λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•΄λ‹Ή μΈλ±μŠ€μ— μš”μ†Œκ°€ μΆ”κ°€λœλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];
food[1] = '✨'; //[ '🍜', '✨', 'πŸ”' ]
food[5] = 'πŸ€ͺ'; //[ '🍜', '✨', 'πŸ”', <2 empty items>, 'πŸ€ͺ' ]

 

μΈλ±μŠ€λŠ” μš”μ†Œμ˜ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λ‚΄λ―€λ‘œ μ •μˆ˜ ν˜Ήμ€ μ •μˆ˜ ν˜•νƒœμ˜ λ¬Έμžμ—΄μ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

λ§Œμ•½ μ΄μ™Έμ˜ 값을 μ‚¬μš©ν•  경우 ν”„λ‘œνΌν‹°κ°€ μƒμ„±λœλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];
food[1.234] = 'πŸ˜†';
console.log(food); //[ '🍜', 'πŸ•', 'πŸ”', '1.234': 'πŸ˜†' ]

 

λ°°μ—΄ μ‚­μ œμ˜ 경우 deleteλ₯Ό μ‚¬μš©ν•΄μ„œ μ‚­μ œν•  수 μžˆλ‹€.

μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 배열이 일반적인 λ°°μ—΄μ˜ λ™μž‘μ„ 흉내 λ‚Έ '객체'이기 λ•Œλ¬Έμ— κ°€λŠ₯ν•œ 것이닀.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];
delete food[0];
console.log(food); //[ <1 empty item>, 'πŸ•', 'πŸ”' ]

 

πŸ§€ λ°°μ—΄ λ©”μ„œλ“œ

μžλ°”μŠ€ν¬λ¦½νŠΈ λ°°μ—΄μ—λŠ” λ‹€μ–‘ν•œ 빌트인 λ©”μ„œλ“œκ°€ μžˆλ‹€.

λ°°μ—΄ 자체λ₯Ό λ³€κ²½ν•˜λŠ” λ©”μ„œλ“œκ°€ 있고, μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œκ°€ μžˆμ–΄ μ£Όμ˜ν•˜λ©° μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

Array.isArray

νŠΉμ •ν•œ μ˜€λΈŒμ νŠΈκ°€ 배열인지 ν™•μΈν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

배열이 λ§žλ‹€λ©΄ true, μ•„λ‹ˆλΌλ©΄ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

const food = ['🍜', 'πŸ•', 'πŸ”'];

console.log(Array.isArray(food)); //true
console.log(Array.isArray({})); //false

 

Array.prototype.indexOf

νŠΉμ •ν•œ μš”μ†Œμ˜ μœ„μΉ˜λ₯Ό 찾을 λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

λ§Œμ•½ νŠΉμ •ν•œ μš”μ†Œκ°€ μ—¬λŸ¬κ°œλΌλ©΄ 첫 번째둜 κ²€μƒ‰λœ μš”μ†Œμ˜ 인덱슀λ₯Ό λ°˜ν™˜ν•˜κ³ ,

μš”μ†Œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ -1을 λ°˜ν™˜ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

console.log(food.indexOf('🍎')); //-1
console.log(food.indexOf('πŸ”')); //2

 

Array.prototype.includes

λ°°μ—΄ μ•ˆμ— νŠΉμ •ν•œ μš”μ†Œκ°€ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

μžˆλ‹€λ©΄ true, μ—†λ‹€λ©΄ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

console.log(food.includes('🍜')); //true

 

Array.prototype.unshift

λ°°μ—΄μ˜ 제일 처음으둜 μš”μ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

food.unshift('πŸ₯˜');
console.log(food); //['πŸ₯˜', '🍜', 'πŸ•', 'πŸ”' ]

 

Array.prototype.push

λ°°μ—΄μ˜ 제일 λ§ˆμ§€λ§‰μœΌλ‘œ μš”μ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

food.push('πŸ₯˜');
console.log(food); //['🍜', 'πŸ•', 'πŸ”', 'πŸ₯˜' ]

 

Array.prototype.shift

λ°°μ—΄μ˜ 첫번째 μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  κ·Έ μš”μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];
const firstFood = food.shift();
console.log(firstFood); //🍜
console.log(food); // ['πŸ•', 'πŸ”'];

 

Array.prototype.pop

λ°°μ—΄μ˜ λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό μ œκ±°ν•˜κ³  κ·Έ μš”μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];
const lastFood = food.pop();
console.log(lastFood); //πŸ”
console.log(food); //['🍜', 'πŸ•' ];

 

Array.prototype.concat

μ—¬λŸ¬ 개의 배열을 λΆ™μ—¬μ£ΌλŠ” λ©”μ„œλ“œμ΄λ‹€.

 

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = arr1.concat(arr2);

console.log(arr1);
console.log(arr2);
console.log(arr3); //[ 1, 2, 3, 4, 5, 6 ]

 

Array.prototype.splice

원본 λ°°μ—΄μ˜ 쀑간에 μš”μ†Œλ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

const pick = food.splice(1, 1);
console.log(food); //['🍜', 'πŸ”']
console.log(pick); //[ 'πŸ•' ]

//인덱슀 1λΆ€ν„° 1개의 μš”μ†Œ μ œκ±°ν•˜κ³ , κ·Έ μžλ¦¬μ— 🍟, πŸ₯€ μ‚½μž…
food.splice(1, 1, '🍟', 'πŸ₯€');
console.log(food); //[ '🍜', '🍟', 'πŸ₯€' ]

 

Array.prototype.slice

원본 배열을 잘라 μƒˆλ‘œμš΄ 배열을 λ§Œλ“œλŠ” λ©”μ„œλ“œμ΄λ‹€.

 

const food = ['🍜', 'πŸ•', 'πŸ”'];

const pick = food.slice(0, 2);
console.log(pick); //[ '🍜', 'πŸ•' ]
console.log(food); //['🍜', 'πŸ•', 'πŸ”']; //원본 λ°°μ—΄μ—” λ³€ν™”κ°€ μ—†λ‹€

 

Array.prototype.reverse

원본 λ°°μ—΄μ˜ μˆœμ„œλ₯Ό λ°˜λŒ€λ‘œ λ’€μ§‘λŠ” λ©”μ„œλ“œμ΄λ‹€.

 

const arr = [1, 2, 3, 4, 5, 6]

const reverseArr = arr.reverse();
console.log(reverseArr); //[ 6, 5, 4, 3, 2, 1 ]

 

Array.prototype.join

원본 λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜κ³ , 인수둜 받은 κ΅¬λΆ„μžλ‘œ λ¬Έμžμ—΄μ„ μ—°κ²°ν•˜μ—¬ λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œμ΄λ‹€.

 

const arr = [1, 2, 3, 4, 5];
const joinArr = arr.join(' ');
console.log(joinArr); //1 2 3 4 5

const joinArr2 = arr.join('');
console.log(joinArr2); //12345

 

Array.prototype.flat

쀑첩 배열을 ν•˜λ‚˜μ˜ λ°°μ—΄λ‘œ ν‰νƒ„ν•˜κ²Œ λ§Œλ“œλŠ” λ©”μ„œλ“œμ΄λ‹€.

깊이의 기본값은 1이닀.

 

let arr = [
  [1, [2, 3]],
  [4, [5, 6]],
];

console.log(arr.flat()); //[ 1, [ 2, 3 ], 4, [ 5, 6 ] ]
console.log(arr.flat(2)); //[ 1, 2, 3, 4, 5, 6 ]

 

Array.prototype.fill

인수둜 받은 νŠΉμ •ν•œ κ°’μœΌλ‘œ 원본 배열을 λ‹€ μ±„μš°λŠ” λ©”μ„œλ“œμ΄λ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const arr = [1, 2, 3, 4, 5, 6];

arr.fill(0); 
console.log(arr); //[ 0, 0, 0, 0, 0, 0 ]

//인수둜 전달받은 '!'λ₯Ό 인덱슀 1λΆ€ν„° 3 μ΄μ „κΉŒμ§€ μ±„μš΄λ‹€.
arr.fill('!', 1, 3);
console.log(arr); //[ 0, '!', '!', 0, 0, 0 ]

 

πŸ§€ λ°°μ—΄ κ³ μ°¨ ν•¨μˆ˜

κ³ μ°¨ ν•¨μˆ˜λŠ” ν•¨μˆ˜λ₯Ό 인수둜 μ „λ‹¬λ°›κ±°λ‚˜ ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§ν•œλ‹€.

 

Array.prototype.sort

λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μ •λ ¬ν•œλ‹€.

기본적으둜 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

원본 배열을 직접 λ³€κ²½ν•œλ‹€.

 

const texts = ['javaScript', 'css'];
texts.sort();
console.log(texts); //[ 'css', 'javaScript' ]

 

λ‹€λ§Œ, 숫자 μ •λ ¬μ˜ 경우 μ£Όμ˜κ°€ ν•„μš”ν•˜λ‹€.

λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μΌμ‹œμ μœΌλ‘œ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•΄ μ •λ ¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

 

const numbers = [0, 1, 5, 3, 10];
numbers.sort();
console.log(numbers); //[ 0, 1, 10, 3, 5 ]

 

λ”°λΌμ„œ 숫자λ₯Ό μ •λ ¬ν•  λ•ŒλŠ” 비ꡐ ν•¨μˆ˜λ₯Ό 인수둜 전달해야 ν•œλ‹€.

비ꡐ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ 0보닀 μž‘μœΌλ©΄ μ˜€λ¦„μ°¨μˆœ, 0보닀 크면 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.

 

const numbers = [0, 1, 5, 3, 10];
numbers.sort((a, b) => a - b);
console.log(numbers); //[ 0, 1, 3, 5, 10 ]

 

Array.prototype.forEach

forλ¬Έ λŒ€μ‹  μ‚¬μš©ν•  수 μžˆλ‹€.

λ‚΄λΆ€μ—μ„œ λ°˜λ³΅λ¬Έμ„ 톡해 배열을 μˆœνšŒν•˜λ©΄μ„œ 콜백 ν•¨μˆ˜λ₯Ό 반볡 ν˜ΈμΆœν•œλ‹€.

 

const numbers = [1, 2, 3];
const answer = [];

numbers.forEach((numbers) => answer.push(numbers * 2));

console.log(answer); //[ 2, 4, 6 ]

 

Array.prototype.find

배열을 μˆœνšŒν•˜λ©΄μ„œ 쑰건에 λ§žλŠ” 첫 번째 μš”μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

const food = [
  { name: 'pizza', emoji: 'πŸ•' },
  { name: 'sushi', emoji: '🍣' },
  { name: 'ramen', emoji: '🍜' },
];

const answer = food.find((value) => value.name === 'pizza');
console.log(answer); //{ name: 'pizza', emoji: 'πŸ•' }

 

Array.prototype.findIndex

배열을 μˆœνšŒν•˜λ©΄μ„œ 쑰건에 λ§žλŠ” 첫번째 μš”μ†Œμ˜ 인덱슀λ₯Ό λ°˜ν™˜ν•œλ‹€.

 

const food = [
  { name: 'pizza', emoji: 'πŸ•' },
  { name: 'sushi', emoji: '🍣' },
  { name: 'ramen', emoji: '🍜' },
  { name: 'sushi', emoji: '🐟' },
];

const answer = food.findIndex((value) => value.name === 'sushi');
console.log(answer); //1

 

Array.prototype.map

forλ¬Έ λŒ€μ‹  μ‚¬μš©ν•  수 μžˆλ‹€.

λ‚΄λΆ€μ—μ„œ λ°˜λ³΅λ¬Έμ„ 톡해 배열을 μˆœνšŒν•˜λ©΄μ„œ 콜백 ν•¨μˆ˜λ₯Ό 반볡 ν˜ΈμΆœν•œλ‹€.

콜백 ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’λ“€λ‘œ κ΅¬μ„±λœ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•œλ‹€.

 

 

const numbers = [1, 2, 3];
const answer = numbers.map((number) => number * 2);

console.log(answer); //[ 2, 4, 6 ]

 

Array.prototype.flatMap

map을 톡해 μƒμ„±λœ 배열을 ν‰νƒ„ν™”ν•œλ‹€.

 

const numbers = [1, 2, 3];
let answer = numbers.map((number) => [1, 2, 3]);
//[ [ 1, 2, 3 ], [ 1, 2, 3 ], [ 1, 2, 3 ] ]

answer = numbers.flatMap((number) => [1, 2, 3]);
console.log(answer); /**
[
  1, 2, 3, 1, 2,
  3, 1, 2, 3
] */

 

Array.prototype.some

배열을 μˆœνšŒν•˜λ©΄μ„œ λΆ€λΆ„μ μœΌλ‘œ 쑰건에 λ§žλŠ”μ§€ ν™•μΈν•œλ‹€.

단 ν•œλ²ˆμ΄λΌλ„ 참이면 true, 그렇지 μ•Šλ‹€λ©΄ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

const food = [
  { name: 'pizza', emoji: 'πŸ•' },
  { name: 'sushi', emoji: '🍣' },
  { name: 'ramen', emoji: '🍜' },
];

const result = food.some((item) => item.name === 'pizza');
console.log(result); //true

 

Array.prototype.every

배열을 μˆœνšŒν•˜λ©΄μ„œ μ „μ²΄μ μœΌλ‘œ 쑰건에 λ§žλŠ”μ§€ ν™•μΈν•œλ‹€.

λͺ¨λ‘ 참이면 true, 그렇지 μ•Šλ‹€λ©΄ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

 

const food = [
  { name: 'pizza', emoji: 'πŸ•' },
  { name: 'sushi', emoji: '🍣' },
  { name: 'ramen', emoji: '🍜' },
];

const result = food.every((item) => item.name === 'pizza');
console.log(result); //false

 

Array.prototype.filter

배열을 μˆœνšŒν•˜λ©΄μ„œ μ½œλ°±ν•¨μˆ˜λ₯Ό 반볡 ν˜ΈμΆœν•œλ‹€.

콜백 ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ true인 μš”μ†Œλ‘œλ§Œ κ΅¬μ„±λœ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•œλ‹€.

원본 배열은 λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€.

 

const food = [
  { name: 'pizza', emoji: 'πŸ•' },
  { name: 'sushi', emoji: '🍣' },
  { name: 'ramen', emoji: '🍜' },
  { name: 'sushi', emoji: '🐟' },
];

const result = food.filter((item) => item.name === 'sushi');
console.log(result); //[ { name: 'sushi', emoji: '🍣' }, { name: 'sushi', emoji: '🐟' } ]

 

Array.prototype.reduce

배열을 μˆœνšŒν•˜λ©΄μ„œ 콜백 ν•¨μˆ˜λ₯Ό 반볡 ν˜ΈμΆœν•œλ‹€.

콜백 ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ„ λ‹€μŒ μˆœνšŒμ— 콜백 ν•¨μˆ˜μ˜ 첫 번째 인수둜 μ „λ‹¬ν•œλ‹€.

 

첫 번째 인수둜 콜백 ν•¨μˆ˜, 두 번째 인수둜 μ΄ˆκΈ°κ°’μ„ μ „λ‹¬λ°›λŠ”λ‹€.

 

const result = [1, 2, 3, 4, 5].reduce((sum, value) => (sum += value), 0);
console.log(result); //15

 

 

 

 

 

'JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

setTimeoutκ³Ό setInterval  (0) 2023.11.02
클래슀  (0) 2023.02.24
객체  (0) 2023.02.21
ν•¨μˆ˜  (0) 2023.02.19
μ œμ–΄λ¬Έ  (0) 2023.02.19

λŒ“κΈ€