๐๋ฐฐ์ด(Array)
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐฐ์ด์ ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด์ ์์๋ฅผ ํ๋ด๋ธ ํน์ ๊ฐ์ฒด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐฐ์ด์ด๋ผ๋ ํ์ ์ ์กด์ฌํ์ง ์์ผ๋ฉฐ ๊ฐ์ฒด๋ก ์ทจ๊ธํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐฐ์ด์ ์ผ๋ฐ์ ์ธ ์๋ฏธ์ ๋ฐฐ์ด, ์ฆ '๊ฐ ์์๊ฐ ๋์ผํ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ์ฐ์์ ์ผ๋ก ๋์ด๋ ์๋ฃ๊ตฌ์กฐ'๊ฐ ์๋ ํฌ์ ๋ฐฐ์ด๋ก, ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋์ผ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ์์๋ ๋๋ฉฐ ์ฐ์์ ์ผ๋ก ์ด์ด์ ธ์์ง ์์ ์๋ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ํด์ ํ ์ด๋ธ๋ก ๊ตฌํ๋ ๊ฐ์ฒด๋ก, ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์ธ๋ฑ์ค๋ก ๋ฐฐ์ด ์์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ์๋ ์๋๊ฐ ๋๋ฆฌ์ง๋ง ํน์ ์์๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์ฝ์ ๋๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ธ๋ค.
๐ํ์ธ
`isArray()`
์ ๋ฌ๋ ์ธ์๊ฐ ๋ฐฐ์ด์ด๋ฉด `true`๋ฅผ ๋ฐํํ๋ค.
๐์ฝ์
`push()`
๋ฐฐ์ด์ ๋งจ ๋ค์ ์์๋ฅผ ์ฝ์ ํ๊ณ ๋ณ๊ฒฝ๋ ๋ฐฐ์ด์ ๊ธธ์ด `length` ํ๋กํผํฐ๋ฅผ ๋ฐํํ๋ค.
`concat()`
์ธ์๋ก ์ ๋ฌ๋ ๊ฐ ๋๋ ๋ฐฐ์ด์ ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅด ์ถ๊ฐํ๋ค ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
`unshift()`
๋ฐฐ์ด์ ๋งจ ์์ ์์๋ฅผ ์ฝ์ ํ๊ณ ๋ณ๊ฒฝ๋ ๋ฐฐ์ด์ ๊ธธ์ด `length` ํ๋กํผํฐ๋ฅผ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๊ธฐ ์ํด ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
const arr = [1, 2];
const newArr = [3, ...arr];
// newArr = [3, 1, 2]
// arr = [1, 2]
`fill()`
๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฐ์ผ๋ก ์ฑ์ด๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
๐๋ณ๊ฒฝ
`splice` ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์์๋ฅผ ๋ค๋ฅธ ์์๋ก ๋ณ๊ฒฝํ ์ ์๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
๋๋ฒ์งธ ์ธ์, ์ฆ ๊ฐ์๊ฐ 0์ด๋ผ๋ฉด ์ญ์ ์์ด ์ฝ์ ๋ง ์งํํ๋ค.
์ธ๋ฒ์งธ ์ธ์, ์ฆ ์ธ๋ฑ์ค์ ๊ฐ์ ๋ค์ ์ธ์๊ฐ ์์ผ๋ฉด ์ญ์ ๋ง ์งํํ๋ค.
const arr = [1, 2, 3, 4];
// ์๋ณธ ๋ฐฐ์ด arr์์ ์ธ๋ฑ์ค 1๋ถํฐ 2๊ฐ์ ์์๋ฅผ ์ญ์ ํ ๋ค ํด๋น ์๋ฆฌ์ 20๊ณผ 30์ ๋ฃ๋๋ค.
const result = arr.splice(1, 2, 20, 30);
// result = [1, 20, 30, 4];
๐์ ๊ฑฐ
`pop()`
๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ํด๋น ์์๋ฅผ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
`shift()`
๋งจ ์ฒ์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ํด๋น ์์๋ฅผ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
`filter()`
์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ ํจ์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ง ๋จ๊ธฐ๊ณ ์ญ์ ํ๋ค.
๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ ๋ค, ๋ฐํ๊ฐ์ด `true`๋ฅผ ๋ง์กฑํ๋ ์์๋ก๋ง ๊ตฌ์ฑ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค. ์ด๋ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
let arr = [1, 2, 3, 4, 5];
arr = arr.filter( e => e !== 3 );
// arr = [1, 2, 4, 5];
[Lv.1][๊ฐ์ ์ซ์๋ ์ซ์ด] ์์ ์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ฒ๋ผ ๊ฐ์ ์์๊ฐ ์ฐ์๋ ๊ฒฝ์ฐ ์ญ์ ํ๋ ค๊ณ ํ ๋, ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
๋ง์ง๋ง ์ธ๋ฑ์ค + 1๋ ์ฐธ์กฐํ ์์๊ฐ ์์ผ๋ฏ๋ก `undefined`์ด ๋๋ค.
let arr = [1, 2, 3, 4, 4, 4, 5, 1, 2];
arr.filter( (val, index) => val !== arr[index + 1]);
// arr = [1, 2, 3, 4, 5, 1, 2]
์ค๋ณต ์์๋ฅผ ์์ ํ ์ ๊ฑฐํ ๋๋ ์ฌ์ฉํ ์ ์๋ค.
const arr = [1, 2, 3, 4, 4, 4, 5, 1, 2];
const result = arr.filter( (val, i, _arr) => _arr.indexOf(val) === i);
// result = [1, 2, 3, 4, 5]
๋ค๋ง ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ ๋๋ `Set`์ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
const arr = [1, 2, 3, 4, 4, 4, 5, 1, 2];
const result = [...new Set(arr)];
// result = [1, 2, 3, 4, 5]
๐์๋ฅด๊ธฐ(๋ถ๋ถ ๋ฐฐ์ด)
`slice()`
์ธ์๋ก ์ ๋ฌ๋ ๋ฒ์์ ์์๋ค์ ๋ณต์ฌํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
์ฒซ๋ฒ์งธ ์ธ์(start)๋ ๋ณต์ฌ๋ฅผ ์์ํ ์ธ๋ฑ์ค. ์์์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด ๋์์์ ์ธ๋ฑ์ค๋ฅผ ๋ปํ๋ค. ์๋ฅผ ๋ค์ด `slice(-2)`๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ๋ ๊ฐ ์์๋ฅผ ๋ณต์ฌํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
๋๋ฒ์งธ ์ธ์(end)๋ ๋ณต์ฌ๋ฅผ ์ข ๋ฃํ ์ธ๋ฑ์ค. ์ด ์ธ๋ฑ์ค๋ ๋ณต์ฌ๋์ง ์๋๋ค. ์ฆ, ๋ณต์ฌํ ๋ `start` ์ธ๋ฑ์ค๋ถํฐ `end - 1` ์ธ๋ฑ์ค๊น์ง์ ์์๋ง ๋ณต์ฌ๋๋ค. ์๋ต ์ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๊ธฐ๋ณธ๊ฐ์ด ๋๋ค.
๐์ ๋ ฌ
`sort()`
๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํ ํ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋ ์๋ฆฌ ์ ์ด์์ ์ซ์๊ฐ ์์ ๊ฒฝ์ฐ ์ํ๋ ํํ๋ก ๋ฐํ๋์ง ์๋๋ค.
const arr = [2, 11, 3, 5, 4, 12];
arr.sort() // [11, 12, 2, 3, 4, 5]๊ฐ ๋๋ค.
arr.sort( (a, b) => a - b); // [2, 3, 4, 5, 11, 12] ์ฌ๋ฐ๋ฅธ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
`reverse()`
๋ฐฐ์ด์ ์ญ์์ผ๋ก ๋ค์ง๊ณ ํด๋น ๋ฐฐ์ด์ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
๐๊ฒฐํฉ
`join()`
๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํฉ์ณ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ค. ์ธ์๊ฐ ์์ผ๋ฉด ๊ฐ ์์ ์ฌ์ด์ `,`์ ์ฝ์ ํ์ฌ ๋ฐํํ๋ค.
๐๊ฒ์
`indexOf()`
์ธ์๋ก ์ ๋ฌ๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
`includes()`
์ธ์๋ก ์ ๋ฌ๋ ์์๊ฐ ์กด์ฌํ๋ฉด `true`๋ฅผ ๋ฐํํ๋ค.(ES7)
๐๋ณต์ฌ
๋ฐฐ์ด์ ์๋ณ์๋ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์๋ณ์์ ๊ฐ์ ํ ๋นํ๋ฉด ๊ฐ์ ๋ฐฐ์ด์ ์ฐธ์กฐํ๊ฒ ๋๋ค.(์์ ๋ณต์ฌ)
์๋์ ๋ฌ๋ฆฌ ๊ธฐ์กด ๋ฐฐ์ด์ ์์ ํ๋ฉด ๋ณต์ฌํ ๋ฐฐ์ด๋ ์์ ๋๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๋๋ค.
let arr = [2, 3, 1, 5, 4];
let copy = arr;
arr.sort();
// arr = [1, 2, 3, 4, 5];
// copy = [1, 2, 3, 4, 5];
๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ ์ฐ์ฐ์(...)๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ํ ๋นํด์ค๋ค.
let arr = [2, 3, 1, 5, 4];
let copy = [...arr];
arr.sort();
// arr = [1, 2, 3, 4, 5]
// copy = [2, 3, 1, 5, 4]
๐2์ฐจ์ ๋ฐฐ์ด ๋ณต์ฌ
๊ฐ ํ๋ง๋ค ๋์ผํ๊ฒ ๊น์ ๋ณต์ฌ๋ฅผ ํด์ค๋ค.
let arr1 = [[1, 2], [3,4]];
let arr2 = arr1.map(e => [...e]);
arr2[0][0] = 0;
// arr1 = [[1, 2], [3,4]]
// arr2 = [[0, 2], [3,4]]
๐์ํ
`forEach()`
๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ธ์๋ก ๋ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ๋ค.
const numbers = [1, 2, 3];
const pows = [];
numbers.forEach( item => pows.push(item ** 2) );
// pows = [1, 4, 9]
`map()`
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ธ์๋ก ์ ๋ฌ ๋ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
const numbers = [1, 4, 9];
const roots = numbers.map( item => Math.sqrt(item) );
// roots = [1, 2, 3]
// numbers = [1, 4, 9]
`reduce()`
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ๋ค. ์ด๋, ์ฝ๋ฐฑ ํจ์์ ๋ฐํ ๊ฐ์ ๋ค์ ์ํ ์ ์ฝ๋ฐฑ ํจ์์ ์ฒซ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ค.
function factorial (...numbers : number[]) : number{
return numbers.reduce((acc, num) => acc * num, 1)
};
๐๋ฐฐ์ด ๊ตฌํํ๊ธฐ
- `constructor`: ๋ฐฐ์ด์ ์ด๊ธฐ ์ํ๋ฅผ ์ ์ํ๋ค. length๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ํ๋ด๋ฉฐ, data๋ ์์๋ฅผ ์ ์ฅํ๋ค.
- `push(element)`: ๋ฐฐ์ด ๋์ ์์๋ฅผ ์ถ๊ฐํ๋ค. ์ถ๊ฐ๋ ํ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํ๋ค.
- `pop()`: ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค.
- `get(index)`: ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์๋ ์์๋ฅผ ๋ฐํํ๋ค.
- `delete(index)`: ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐฐ์ด์ ์ฌ์ ๋ ฌํ๋ค.
- `_shiftItems(index)`: ์์๋ฅผ ์ ๊ฑฐํ ๋ ๋ฐฐ์ด์ ์์๋ค์ ์ฌ์ ๋ ฌํ๋ค.
- `print()`: ํ์ฌ ๋ฐฐ์ด์ ์ํ๋ฅผ ์ถ๋ ฅํ๋ค.
class MyArray {
constructor() {
this.length = 0; // ๋ฐฐ์ด์ ๊ธธ์ด
this.data = {}; // ์์๋ฅผ ์ ์ฅํ ๊ฐ์ฒด
}
// ์์๋ฅผ ๋ฐฐ์ด์ ์ถ๊ฐ
push(element) {
this.data[this.length] = element;
this.length++;
return this.length;
}
// ๋ง์ง๋ง ์์ ์ ๊ฑฐ
pop() {
if (this.length === 0) return undefined;
this.length--;
const removedElement = this.data[this.length];
delete this.data[this.length];
return removedElement;
}
// ํน์ ์ธ๋ฑ์ค์ ์์ ๋ฐํ
get(index) {
return this.data[index];
}
// ํน์ ์ธ๋ฑ์ค์ ์์ ์ ๊ฑฐ
delete(index) {
const removedElement = this.data[index];
this._shiftItems(index);
return removedElement;
}
// ์์๋ค์ ์ธ๋ฑ์ค 0๋ถํฐ ์ฌ์ ๋ ฌ
_shiftItems(index) {
for (let i = index; i < this.length - 1; i++) {
this.data[i] = this.data[i + 1];
}
delete this.data[this.length - 1];
this.length--;
}
// ๋ฐฐ์ด ์ถ๋ ฅ
print() {
console.log(this.data);
}
}
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ๋ฌธ์์ด ๋น๊ต (2) | 2024.10.07 |
---|---|
[JavaScript] Kakao Map API (0) | 2024.09.19 |
[JavaScript] axios.get ํ๋ผ๋ฏธํฐ๊ฐ ์ ์ก๋์ง ์์ (1) | 2024.03.29 |
[JavaScript] url ํ๋ผ๋ฏธํฐ ํ์ฉํ๊ธฐ (0) | 2024.03.29 |
[JavaScript] ๊ฐ์ ํด๋์ค๋ฅผ ๊ฐ์ง ๋ฒํผ ํ๋ฒ์ eventListener ์ค์ ํ๊ธฐ (0) | 2024.03.21 |