2025. 8. 21. 01:02ใFront-end/JavaScript

๋ชฉ์ฐจ
1-3. const ๋ฐฐ์ด์ ๋ณํ์ง ์์๊น?
2-2. ์๋ณธ ๋ฐฐ์ด ์์ : shift(), unshift(), push(), pop(), splice(), sort(), reverse()
2-3. ์๋ก์ด ๋ฐฐ์ด ์์ฑ : concat(), slice(), Spread Operator
2-4. ๋ฐฐ์ด ์์ ๋ค๋ฃจ๊ธฐ : map(), forEach(), filter()
2-5. ํน์ ๊ฐ ์ฐพ๊ธฐ : indexOf(), lastIndexOf(), includes()
2-6. ๋ฐฐ์ด ์ถ๋ ฅํ๊ธฐ : toString(arr)
1. ๋ฐฐ์ด
์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก, ์ ์ ํ์ ์ ์ธ๋ฑ์ค๋ฅผ ํ๋กํผํฐ๋ก ๊ฐ์ง๋ ๊ฐ์ฒด์ด๋ค.
์ธ๋ฑ์ค ๊ฐ์ 0๋ถํฐ ์์ํ๋ค.
1. ๋ฐฐ์ด์ ์์ฑ
๋ฐฐ์ด์ Array() ์์ฑ์ ํจ์๋, ๋ฐฐ์ด ๋ฆฌํฐ๋ด[]์ ์ฌ์ฉํด ์์ฑํ๋ค.
// 1. Array() ์์ฑ์ ํจ์ ์ฌ์ฉ (์ ์์)
const arr = new Array(1,'2', true);
console.log(arr); // [1, '2', true]
const arr = new Array(3);
console.log(arr); // [empty, empty, empty] - ๊ธธ์ด๊ฐ 3์ธ ๋น ๋ฐฐ์ด
// 2. ๋ฐฐ์ด ๋ฆฌํฐ๋ด[] ์ฌ์ฉ
const arr = [1, '2', true];
2. ๋ฐฐ์ด ์์ ์ ๊ทผ๊ณผ ๋์ ์์ ์์ฑ
๋ฐฐ์ด ์์์ ์ ๊ทผํ ๋๋ ๋๊ดํธ[]์ ์ธ๋ฑ์ค๊ฐ์ ๋ฃ์ด ์ ๊ทผํ๋ค.
๋ฐฐ์ด ๊ธธ์ด๋ณด๋ค ํฐ ์ธ๋ฑ์ค๊ฐ์ ์ฌ์ฉํ๋ค๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.
์์๋ฅผ ์ถ๊ฐํ ๋๋ ์ํ๋ ์ธ๋ฑ์ค์ ๊ฐ์ ์ถ๊ฐํ ์ ์๋ค.
// ๋ฐฐ์ด ์์ ์ ๊ทผ
const arr = [1, 2, 3];
console.log(arr[0]); // 1
// ๋์ ์์ ์์ฑ
const arr = [];
arr[0] = 1;
arr[2] = 3;
console.log(arr); // [1, empty, 3]
- ๋๋ฒ์งธ ์์๊ฐ์ด ์ค๊ฐ์ด ๋น ๋ฐฐ์ด์ ํฌ์ ๋ฐฐ์ด์ด๋ผ๊ณ ํ๋๋ฐ, ๋น ์์๋ forEach(), map(), filter()๊ฐ์ ๋ฐฐ์ด์ ๋ด์ฅ ๋ฉ์๋์์๋ ๋ฌด์๋๋, find(), findIndex() ๋ฉ์๋์์๋ ๋ฌด์๋์ง ์๊ณ ๋ชจ๋ ํ์๋๋ค.
ํฌ์ ๋ฐฐ์ด์ ๋์์ด ์ผ๊ด๋์ง ์๊ณ , ๊ฐ๋ ์ฑ๊ณผ ๊ตฌ์กฐ ํ์ ์ ์์ข์ผ๋ ์ฌ๋งํ๋ฉด ์ฐ์ง ์๋๋ค.
3. const ๋ฐฐ์ด์ ๋ณํ์ง ์์๊น?
์ ์์์์ ๋ฐฐ์ด์ ์ ์ธํ ๋ const ํค์๋๋ฅผ ์ฌ์ฉํ๋ค.
const ํค์๋๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ๊ฐ์ ์ฌํ ๋นํ ์ ์๋ค. (TypeError ๋ฐ์)
ํ์ง๋ง const๋ก ๊ฐ์ฒด/๋ฐฐ์ด์ ์ ์ธํ ๊ฒฝ์ฐ, ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
const๋ก ์์๋ก ์ ์ธ๋ ๊ฒ์ ๊ฐ์ฒด/๋ฐฐ์ด ๋ด๋ถ ํ๋กํผํฐ๊ฐ ์๋๋ผ, ๋ฐฐ์ด์ ์ฃผ์๊ฐ ๊ทธ ์์ฒด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
const arr = [1, 2, 3];
// โ
๋ด๋ถ ๊ฐ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
arr[0] = 99;
arr.push(4);
console.log(arr); // [99, 2, 3, 4]
// โ ๋ณ์ ์์ฒด๋ฅผ ๋ค๋ฅธ ๋ฐฐ์ด๋ก ์ฌํ ๋น์ ๋ถ๊ฐ๋ฅ
arr = [9, 9, 9]; // TypeError
const๋ก ๋ฐฐ์ด์ ์ ์ธํ๋ ์ด์ ๋ ๋ถํ์ํ ์ฌํ ๋น ๊ฐ๋ฅ์ฑ์ ์ค์ด๊ณ , ์ํ ๊ด๋ฆฌ ์ค์๋ฅผ ์ค์ด๋ ค๋ ๋ชฉ์ ์ด๋ค.
๋ฐฐ์ด ๋ด๋ถ ๊ฐ๊น์ง ๋ณ๊ฒฝ์ ๋ง๊ณ ์ถ๋ค๋ฉด JS ๋ด์ฅ ๊ฐ์ฒด์ ๋ฉ์๋์ธ Object.freeze(arr)๋ฅผ ์ฌ์ฉํ๋ค.
// ์์ ๋๊ฒฐ
const arr = [1, 2, 3];
Object.freeze(arr);
// ๊น์ ๋๊ฒฐ
const arr = [[1, 2], [3, 4]];
function deepFreeze(obj) {
Object.freeze(obj);
Object.keys(obj).forEach(key => {
if(typeof obj[key] === 'object' && obj[key] !== null) {
deepFreeze(obj[key]);
}
});
return obj;
}
const arr2 = deepFreeze(arr);
arr2.push(4); // error
2. ๋ฐฐ์ด ๋ฉ์๋
1. ๋ฐฐ์ด ๊ธธ์ด : length
length
๋น ์์ ๊ฐ์ ํฌํจํ์ฌ ์ ์ฒด ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ๋ฉฐ, length ํ๋กํผํฐ๋ฅผ ์ง์ ์์ ํ์ฌ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์กฐ์ ํ ์ ์๋ค.
const arr = [1, 2, 3, 4];
console.log(arr.length); // 4
arr.length = 2;
console.log(arr); // [1, 2]
2. ์๋ณธ ๋ฐฐ์ด ์์ : shift(), unshift(), push(), pop(), splice(), sort()
shift()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ญ์
- ๋ฐํ๊ฐ : ์ญ์ ๋ ์์
const arr = [1, 2];
console.log(arr.shift)); // 1
console.log(arr); // [2]
unshift()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์์๋ฅผ ์ถ๊ฐ
- ๋ฐํ๊ฐ : ๋ฐฐ์ด์ ์๋ก์ด ๊ธธ์ด
const arr = [1, 2];
console.log(arr.unshift(-1, 0)); // 4
console.log(arr); //[-1, 0, 1, 2]
push()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์์๋ฅผ ์ถ๊ฐ
- ๋ฐํ๊ฐ : ๋ฐฐ์ด์ ์๋ก์ด ๊ธธ์ด
const arr=[1];
console.log(arr.push(2,3)); // 3
console.log(arr); // [1, 2, 3]
pop()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ์ญ์
- ๋ฐํ๊ฐ : ์ญ์ ๋ ์์
const arr = [1, 2];
console.log(arr.pop()); // 2
console.log(arr); // [1]
splice()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐ/๊ต์ฒด/์ญ์ ํ์ฌ ๋ฐฐ์ด ๋ฐ์ดํฐ ๋ณ๊ฒฝ
- ๋ฐํ๊ฐ : ์ญ์ ๋ ๋ฐฐ์ด
splice(startIndex) : n๋ฒ์งธ ์ธ๋ฑ์ค ์ด์์ ๊ฐ์ ๋ชจ๋ ์ญ์
splice(startIndex, deleteCount) : startIndex๋ถํฐ deleteCount๋งํผ ์ญ์
splice(startIndex, deleteCount, item, ... ) : ์ญ์ ํ ์๋ฆฌ์ item๋ค ์ถ๊ฐ
const arr = [1, 2, 3];
console.log(arr.splice((1, 2)); // [2, 3] : arr[1]~arr[2] ์ญ์
console.log(arr); // [1]
sort()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ ์์๋ฅผ '์ธ์๋ก ๋๊ธด ๋น๊ต ํจ์'๋ฅผ ์ฌ์ฉํด ์ ๋ ฌ
- ๋ฐํ๊ฐ : ์ฌ์ ๋ ฌ๋ ๋ฐฐ์ด
const arr = [3, 2, 4, 21, 55];
arr.sort();
console.log(arr); // [2, 21, 3, 4, 55] : ๋ฌธ์ ์ ๋ ฌ์ด ์๋ ๋ค๋ฅธ ๋ฐฉ์์ ์ํ๋ฉด ๋น๊ต ํจ์๋ฅผ ์ ์ํด์ผํจ
// ํฌ๊ธฐ ์์ผ๋ก ๋น๊ตํ๋ ํจ์ ๋ง๋ค์ด์ sort์ ๋๊ธฐ๊ธฐ
function compareNumeric(a, b) {
if(a>b) return 1;
if(a==b) return 0;
if(a<b) return -1;
}
arr(sort(compareNumeric);
console.log(arr); // [2, 3, 4, 21, 55]
reverse()
- ๊ธฐ๋ฅ : arr์ ์์๋ฅผ ์ญ์์ผ๋ก ์ ๋ ฌ
- ๋ฐํ๊ฐ : ์ฌ์ ๋ ฌ๋ ๋ฐฐ์ด
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert(arr); // 5, 4, 3, 2, 1
3. ์๋ก์ด ๋ฐฐ์ด ์์ฑ : concat(), slice(), Spread Operator
concat()
- ๊ธฐ๋ฅ : ์ธ์๋ก ๋๊ธด ๋ฐฐ์ด/๊ฐ๋ค์ ๊ธฐ์กด ๋ฐฐ์ด์ ํฉ์ณ, ์๋ก์ด ๋ฐฐ์ด์ ์์ฑ
- ๋ฐํ๊ฐ : ์๋ก ์์ฑ๋ ๋ฐฐ์ด
const arr = [1, 2, 3];
const newArr = arr.concat([4, 5]);
console.log(arr); //[1, 2, 3]
console.log(newArr); // [1, 2, 3, 4, 5]
slice()
- ๊ธฐ๋ฅ : ํน์ ๋ฒ์์ ์์๋ฅผ ์์ ๋ณต์ฌํด, ์๋ก์ด ๋ฐฐ์ด์ ์์ฑ (์ฐธ์กฐ๊ฐ ์ ์ง๋จ)
- ๋ฐํ๊ฐ : ์๋ก ์์ฑ๋ ๋ฐฐ์ด
const obj = {};
const arr = [1, obj, 3];
const newArr = arr.slice(1, 2);
console.log(newArr[0] === obj); // true
ํผ์นจ ์ฐ์ฐ์ (Spread Operator)
- ๊ธฐ๋ฅ : slice() ์ฐ์ฐ์์ ๊ฐ์
const arr = [1, 2, 3];
const newArr = [...arr];
console.log(newArr); // [1, 2, 3]
4. ๋ฐฐ์ด ์์ ๋ค๋ฃจ๊ธฐ : map(), forEach(), filter()
map()
- ๊ธฐ๋ฅ : '๋ชจ๋ ์์๋ฅผ ์ธ์๋ก ๋ฐ์ ํจ์'๋ฅผ ์คํํด ํน์ ํ์์ผ๋ก ๋ณ๊ฒฝํ์ฌ ์๋ก์ด ๋ฐฐ์ด ์์ฑ
- ๋ฐํ๊ฐ : ์๋ก ์์ฑ๋ ๋ฐฐ์ด
const arr = [1, 2, 3];
const newArr = arr.map(x => x + 1);
console.log(newArr); // [2, 3, 4];
- ๋ฐํ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ๋ณ์์ ๋ฐํ๊ฐ์ ๋ฃ๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
forEach()
- ๊ธฐ๋ฅ : '์ธ์๋ก ๋ฐ์ ํจ์'๋ฅผ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๋์์ผ๋ก ์คํ
const arr = [1, 2, 3];
const newArr = arr.forEach(x => console.log(x));
["Bilbo", "Gandalf", "Nazgul"].forEach((item, index, array) => {
alert(`${item} is at index ${index} in ${array}`);
});
- ์ฑ๋ฅ ๋ฌธ์ ๋ก for๋ฌธ์ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- map๊ณผ ๋ค๋ฅด๊ฒ ๋ฐํ๊ฐ์ด ์๋ค.
filter()
- ๊ธฐ๋ฅ : '์ธ์๋ก ๋ฐ์ ํจ์'์ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ์์๋ค๋ก ์๋ก์ด ๋ฐฐ์ด ์์ฑ
- ๋ฐํ๊ฐ : ์๋ก ์์ฑ๋ ๋ฐฐ์ด
const arr = [1, 2, 3];
const newArr = arr.filter(x => x != 1);
console.log(newArr); // [2, 3]
5. ํน์ ๊ฐ ์ฐพ๊ธฐ : indexOf(), lastIndexOf(), includes()
indexOf(item)
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ item์ด ํฌํจ๋์ด ์๋์ง ํ์
- ๋ฐํ๊ฐ : ํฌํจ๋ ๊ฒฝ์ฐ : ํด๋น ์ธ์๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค, ์์ ๊ฒฝ์ฐ -1
let arr = [1, 2, 3, 1];
console.log(arr.indexOf(1)); // 0
console.log(arr.indexOf(5)); // -1
lastIndexOf()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ item์ด ํฌํจ๋์ด ์๋์ง ๋ค์์๋ถํฐ ํ์
- ๋ฐํ๊ฐ : ํฌํจ๋ ๊ฒฝ์ฐ : ํด๋น ์ธ์๊ฐ ์๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค, ์์ ๊ฒฝ์ฐ -1
let arr = [1, 2, 3, 1];
console.log(arr.lastIndexOf(1)); // 3
console.log(arr.lastIndexOf(5)); // -1
includes()
- ๊ธฐ๋ฅ : ๋ฐฐ์ด์ item์ด ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ๋ง ํ์ธ
- ๋ฐํ๊ฐ : ์์ ๊ฒฝ์ฐ true, ์์ ๊ฒฝ์ฐ false
let arr = [1, 2, 3, 1];
console.log(arr.includes(1)); // true
console.log(arr.includes(5)); // false
6. ๋ฐฐ์ด ์ถ๋ ฅํ๊ธฐ : toString(arr)
toString() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์์๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ ๋ฌธ์์ด์ด ๋ฐํ๋๋ค.
let arr = [1, 2, 3];
alert( arr ); // 1, 2, 3
3. ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ผ๋ฐ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ length ํ๋กํผํฐ๋ก ์์ ์ ์ ๊ฐ์ ๊ฐ์ง ๊ฐ์ฒด์ฌ์ผ ํ๋ค.
// ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด ์์
const arr = {
0: 'hi',
1: 'my',
2: 'name is',
3: 'bdy',
length: 4 // ํ๋กํผํฐ๋ก length: ์์ ์ ์๋ฅผ ๊ฐ์ง
};
// ์ค์ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด arguments
function foo(a, b, c) {
console.log(arguments[0], arguments[1], arguments[2]); // 'a', 'b', 'c'
console.log(arguments.length); // 3
}
foo('a', 'b', 'c');
arr, arguments ๊ฐ์ฒด๋ ๋ฐฐ์ด์ฒ๋ผ ์ธ๋ฑ์ค๋ก ํ๋กํผํฐ์ ์ ๊ทผํ๋ฉฐ legnth๋ฅผ ๊ฐ์ง๋,
์ ์ฌ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ๋ด์ฅ ๋ฉ์๋๋ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ด ๋ ๋ฐฐ์ด์ ๋ด์ฅ ๋ฉ์๋๋ฅผ call(), apply() ํจ์์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
function foo(a, b, c) {
Array.prototype.forEach.call(arguments, (arg) => {
console.log(arg); // 'a', 'b', 'c'
});
}
foo('a', 'b', 'c');
์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ DOM์ ๋ค๋ฃจ๋ค๋ณด๋ฉด ์์ฃผ ๋ณผ ์ ์๋ ํํ์ ๋ฐ์ดํฐ์ด๋ค.
- ์์ฆ์๋ arguments๋ ๊ฑฐ์ ์์ฐ๊ณ rest parameter(...)๋ฅผ ์ฌ์ฉํ๋ค.
- ์ด์ ๋ ๋ ๊ฑฐ์ ์ฝ๋ ์ ์ง๋ณด์ํ ๋๋ ์ฌ์ฉํ๋ค๊ณ ํ๋ค.
4. for...of ๋ฐ๋ณต๋ฌธ
๋ฐฐ์ด์ ๊ฐํธํ๊ฒ ์ํํ๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๋ฉฐ ๋ฐ๋ณต๋ ๋๋ง๋ค element์ ๋ฐฐ์ด์ ์์๋ฅผ ํ ๋นํ๋ค.
let arr = [1, 2, 3, 4, 8];
for(let element of arr) {
console.log(element); // 1, 2, 3, 4, 8
}
๋ฌผ๋ก ๊ฐ์ฒด์ ๋ชจ๋ ํ๋กํผํฐ๋ฅผ ๋๋ for...in๋ฌธ์ผ๋ก๋ ๋ฐฐ์ด์ ์์๋ค์ ๋์ผํ๊ฒ ์ถ๋ ฅํ ์ ์์ผ๋,
๋ฐฐ์ด์ ๋ฉ์๋๋ length ํ๋กํผํฐ ๋ฑ์ด ํ ๋น๋ ์๋ ์๊ธฐ ๋๋ฌธ์ for...of๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์์ ํ๋ค.
์ฐธ๊ณ
๊ธฐ์ด๋ถํฐ ์์ฑ๊น์ง, ํ๋ฐํธ์๋ (์ด์ฌ์ฑ|ํ์ )
๊ธฐ์ด๋ถํฐ ์์ฑ๊น์ง, ํ๋ฐํธ์๋ - ์์ค24
๋๋์ด, ์ต์ด์ ๊ฐ๋ก ์๊ฐ ๋์์ต๋๋ค! ํ๋ฐํธ์๋์ ๊ฐ๋ ๊ณผ ์๋ฆฌ๋ฅผ ๋ชจ๋ ๋ด์ “ํ๋ฐํธ์๋์ ์ ์”์ฒซ์งธ, ๊ฐ๋ ๊ณผ ์ค์ต, ์ ์ฉ๊ณผ ํจ์จ์ ๋ชจ๋ ์ก์ ๋์! ํํํ๊ฒ ๊ฐ๋ ์ ์ก๊ณ , ๊ฐ๋ ์ ๋ฐ๋ก ์
www.yes24.com
https://ko.javascript.info/array-methods
๋ฐฐ์ด๊ณผ ๋ฉ์๋
ko.javascript.info
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| B22 : ๋ฌธ์์ด ์ฌํ (4) | 2025.08.21 |
|---|---|
| B21 : ์ซ์ํ ์ฌํ (0) | 2025.08.21 |
| B19 : ๋ฉํผ ๊ฐ์ฒด๋ก ์์ํ์ ๋ฉ์๋ ์ฐ๊ธฐ (0) | 2025.08.21 |
| B18 : Date ๊ฐ์ฒด (0) | 2025.08.20 |
| B17 : ์ฌ๋ณผ(Symbol) ํ์ (0) | 2025.08.20 |
GitHub