์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ๋์ดํ ์๋ฃ๊ตฌ์กฐ.
์์: ๋ฐฐ์ด์ด ๊ฐ์ง๊ณ ์๋ ๊ฐ. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ ๋ฐฐ์ด์ ์์๊ฐ ๋ ์ ์์.
์ธ๋ฑ์ค: ์์์ ์์น๋ฅผ ๋ํ๋ด๋ 0 ์ด์์ ์ ์. ๋ฐฐ์ด์ ์์์ ์ ๊ทผํ ๋ ์ฌ์ฉ.
๋ฐฐ์ด์ ๊ฐ์ฒด์ง๋ง ์ผ๋ฐ ๊ฐ์ฒด์๋ ๊ตฌ๋ณ๋๋ ๋ ํนํ ํน์ง์ด ์๋ค.
| ๊ตฌ๋ถ | ๊ฐ์ฒด | ๋ฐฐ์ด |
|---|---|---|
| ๊ตฌ์กฐ | ํ๋กํผํฐ ํค์ ํ๋กํผํฐ ๊ฐ | ์ธ๋ฑ์ค์ ์์ |
| ๊ฐ์ ์ฐธ์กฐ | ํ๋กํผํฐ ํค | ์ธ๋ฑ์ค |
| ๊ฐ์ ์์ | X | O |
| length ํ๋กํผํฐ | X | O |
์๋ฃ๊ตฌ์กฐ์์์ ๋ฐฐ์ด: ๋ฐฐ์ด์ ์์๊ฐ ํ๋์ ๋ฐ์ดํฐ ํ์
์ผ๋ก ํต์ผ๋์ด ์์ผ๋ฉฐ ์๋ก ์ฐ์์ ์ผ๋ก ์ธ์ ํด ์๋ ๋ฐ์ง ๋ฐฐ์ด
์๋ฐ์คํฌ๋ฆฝํธ์์์ ๋ฐฐ์ด: ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด์ ๋์์ ํ๋ด ๋ธ ํน์ํ ๊ฐ์ฒด๋ค. ๋ฐฐ์ด์ ์์๋ฅผ ์ํ ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋์ผํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง ์์๋ ๋๊ณ , ์ฐ์์ ์ผ๋ก ์ด์ด์ ธ ์์ง ์์ ์๋ ์๋ ํฌ์ ๋ฐฐ์ด์ ํ์ฉํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ํด์ ํ ์ด๋ธ๋ก ๊ตฌํ๋ ๊ฐ์ฒด์ด๋ฏ๋ก ์ธ๋ฑ์ค๋ก ์์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด๋ณด๋ค ์ฑ๋ฅ์ ์ธ ๋ฉด์์ ๋๋ฆด ์๋ฐ์ ์๋ ๊ตฌ์กฐ์ ์ธ ๋จ์ ์ด ์๋ค. ํ์ง๋ง ์์๋ฅผ ์ฝ์ ๋๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด๋ณด๋ค ๋น ๋ฅธ ์ฑ๋ฅ์ ๊ธฐ๋ํ ์ ์๋ค.
length ํ๋กํผํฐ์ ๊ฐ์ 0๊ณผ 2^32 - 1 ๋ฏธ๋ง์ ์์ ์ ์๋ค.
length ํ๋กํผํฐ ๊ฐ์ ๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ฉด ์๋์ผ๋ก ๊ฐฑ์ ๋๊ณ ๊ธธ์ด์ ๊ฐ์ ๋ช ์์ ์ผ๋ก ํ ๋นํ ์ ์๋ค.
๊ทธ๋ฌ๋ ํ์ฌ length ํ๋กํผํฐ๋ณด๋ค ํฐ ์ซ์ ๊ฐ์ ํ ๋นํ๋ ๊ฒฝ์ฐ์ length ํ๋กํผํฐ ๊ฐ์ ๋ณ๊ฒฝ๋์ง๋ง ์ค์ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๋์ด๋์ง๋ ์๋ ๋ฑ ์๋ฌด ๋ณํจ์ด ์๋ค.
ํฌ์ ๋ฐฐ์ด์ length์ ๋ฐฐ์ด ์์์ ๊ฐ์๊ฐ ์ผ์นํ์ง ์๋๋ค. ํฌ์ ๋ฐฐ์ด์ length๋ ํฌ์ ๋ฐฐ์ด์ ์ค์ ์์ ๊ฐ์๋ณด๋ค ์ธ์ ๋ ํฌ๋ค.
ํฌ์ ๋ฐฐ์ด์ ๊ฐ๋ ์ , ์ฑ๋ฅ์ ์ผ๋ก ์ข์ง ์๋ ์ํฅ์ ์ฃผ๋ฏ๋ก ์ง์ํด์ผ ํ๋ฉฐ ๋ฐฐ์ด์๋ ๊ฐ์ ํ์ ์ ์์๋ฅผ ์ฐ์์ ์ผ๋ก ์์น์ํค๋ ๊ฒ์ ์ต์ ์ผ๋ก ํ๋ค.
0๊ฐ ์ด์์ ์์๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ์ฌ ๋๊ดํธ([])๋ก ๋ฌถ๋๋ค.
const arr = [1, 2, 3];
console.log(arr.length); // 3
๊ฐ์ฒด ๋ฆฌํฐ๋ด๊ณผ ๋ฌ๋ฆฌ ํ๋กํผํฐ ํค๊ฐ ์๊ณ ๊ฐ๋ง ์กด์ฌํ๋ค.
๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ์์๋ฅผ ํ๋๋ ์ถ๊ฐํ์ง ์์ผ๋ฉด ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 0์ธ ๋น ๋ฐฐ์ด์ด ๋๋ค.
๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ์์๋ฅผ ์๋ตํ๋ฉด ํฌ์ ๋ฐฐ์ด์ด ๋๋ค.
-
์ ๋ฌ๋ ์ธ์๊ฐ 1๊ฐ์ด๊ณ ์ซ์์ธ ๊ฒฝ์ฐ length ํ๋กํผํฐ ๊ฐ์ด ์ธ์์ธ ๋ฐฐ์ด์ ์์ฑ. ์ด๋ ์์ฑ๋ ๋ฐฐ์ด์ ํฌ์ ๋ฐฐ์ด๋ก, length ํ๋กํผํฐ ๊ฐ์ 0์ด ์๋์ง๋ง ์ค์ ๋ก ๋ฐฐ์ด์ ์์๋ ์กด์ฌํ์ง ์๋๋ค.
-
์ ๋ฌ๋ ์์๊ฐ ์๋ ๊ฒฝ์ฐ ๋น ๋ฐฐ์ด์ ์์ฑํ๋ค.
-
์ ๋ฌ๋ ์ธ์๊ฐ 2๊ฐ ์ด์์ด๊ฑฐ๋ ์ซ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
new ์ฐ์ฐ์์ ํจ๊ป ํธ์ถํ์ง ์๋๋ผ๋ ์์ฑ์ ํจ์๋ก ๋์ํ๋ค.
์ ๋ฌ๋ ์ธ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
์ ๋ฌ๋ ์ธ์๊ฐ 1๊ฐ์ด๊ณ ์ซ์์ฌ๋ ์ธ์๋ฅผ ์์๋ก ๊ฐ๋๋ค.
Array.of(1); // -> [1]
Array.of(1, 2, 3); // -> [1, 2, 3]
์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด ๋๋ ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ๋ฐํํ๋ค.
Array.from({ length: 2, 0: 'a', 1: 'b'}); // -> ['a', 'b']
Array.from('Hello'); // -> ['H', 'e', 'l', 'l', 'o']
๋ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ ์ฝ๋ฐฑ ํจ์๋ฅผ ํตํด ๊ฐ์ ๋ง๋ค๋ฉด์ ์์๋ฅผ ์ฑ์ธ ์ ์๋ค.
Array.from({length: 3}); // -> [undefined, undefined, undefined]
Array.from({length: 3}, (_, i) => i); // -> [0, 1, 2]
๋ฐฐ์ด์ ์์๋ฅผ ์ฐธ์กฐํ ๋๋ ๋๊ดํธ ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ํด๋น ์์น์ ์๋ ์์๋ฅผ ์ฐธ์กฐํ๋ค.
const arr =[1, 2, 3];
console.log(arr[2]); // 3
์กด์ฌํ์ง ์๋ ์์์ ์ ๊ทผํ๋ฉด undefined๊ฐ ๋ฐํ๋๋ค.
์กด์ฌํ์ง ์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ๊ฐ์ ํ ๋นํ๋ฉด ์๋ก์ด ์์๊ฐ ์ถ๊ฐ๋๋ค. length ํ๋กํผํฐ ๊ฐ์ ์๋ ๊ฐฑ์ ๋๋ค.
const arr = [0];
arr[1] = 1;
console.log(arr); // [0, 1];
๋ง์ฝ ํ์ฌ ๋ฐฐ์ด์ length ํ๋กํผํฐ ๊ฐ๋ณด๋ค ํฐ ์ธ๋ฑ์ค๋ก ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ฉด ํฌ์ ๋ฐฐ์ด์ด ๋๋ค.
arr[100] = 100;
console.log(arr); // [0, 1, empty x 98, 100]
์ด๋ฏธ ์์๊ฐ ์กด์ฌํ๋ ์์์ ๊ฐ์ ์ฌํ ๋นํ๋ฉด ์์๊ฐ์ด ๊ฐฑ์ ๋๋ค.
arr[1] = 10;
console.log(arr); // [0, 10, empty x 98, 100];
๋ง์ฝ ์ ์ ์ด์ธ์ ๊ฐ์ ์ธ๋ฑ์ค์ฒ๋ผ ์ฌ์ฉํ๋ฉด ํ๋กํผํฐ๊ฐ ์์ฑ๋๋ค. ์ด๋ ์ถ๊ฐ๋ ํ๋กํผํฐ๋ length ํ๋กํผํฐ ๊ฐ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
delete ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ญ์ ํ์ฌ ์์๋ฅผ ์ญ์ ํ ์ ์๋ค. ์ด๋ ๋ฐฐ์ด์ ํฌ์ ๋ฐฐ์ด์ด ๋๋ฉฐ length ํ๋กํผํฐ ๊ฐ์ ๋ณํ์ง ์๋๋ค. ๋ฐ๋ผ์ delete ์ฐ์ฐ์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
ํฌ์ ๋ฐฐ์ด์ ๋ง๋ค์ง ์์ผ๋ฉด์ ๋ฐฐ์ด์ ํน์ ์์๋ฅผ ์์ ํ ์ญ์ ํ๋ ค๋ฉด Array.prototype.splice ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
const arr = [1, 2, 3];
// Array.prototype.splice(์ญ์ ๋ฅผ ์์ํ ์ธ๋ฑ์ค, ์ญ์ ํ ์์ ์)
// arr[1]๋ถํฐ 1๊ฐ์ ์์๋ฅผ ์ ๊ฑฐ
arr.splice(1, 1);
console.log(arr); // [1, 3]
// length ํ๋กํผํฐ๊ฐ ์๋ ๊ฐฑ์ ๋จ
console.log(arr.length); // 2
์๋ณธ ๋ฐฐ์ด(๋ฐฐ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด, ์ฆ ๋ฐฐ์ด ๋ฉ์๋์ ๊ตฌํ์ฒด ๋ด๋ถ์์ this๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด)์ ์ง์ ๋ณ๊ฒฝํ๋ ๋ฉ์๋์ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ์ฌ ๋ฐํํ๋ ๋ฉ์๋๊ฐ ์๋ค.
์ ์ ๋ฉ์๋๋ก ์ ๋ฌ๋ ์ธ์๊ฐ ๋ฐฐ์ด์ด๋ฉด true, ๋ฐฐ์ด์ด ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์์ ์ธ์๋ก ์ ๋ฌ๋ ์์๋ฅผ ๊ฒ์ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ธ์๋ก ์ ๋ฌํ ์์์ ์ค๋ณต๋๋ ์์๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ์ฒซ ๋ฒ์งธ๋ก ๊ฒ์๋ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ธ์๋ก ์ ๋ฌํ ์์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ๋ฐํํ๋ค.
const arr = [1, 2, 2, 3];
arr.indexOf(2); // -> 1
arr.indexOf(4); // -> -1
// ๋ ๋ฒ์งธ ์ธ์๋ ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค๋ค. ๋ ๋ฒ์งธ ์ธ์๋ฅผ ์๋ตํ๋ฉด ์ฒ์๋ถํฐ ๊ฒ์.
arr.indexOf(2, 2); // -> 2
๋ฐฐ์ด์ ํน์ ์์๊ฐ ์กด์ฌํ๋์ง ํ์ธํ ๋ ์ ์ฉํ์ง๋ง indexOf ๋์ Array.prototype.includes๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ ์ฑ์ด ๋ ์ข๋ค.
์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ชจ๋ ๊ฐ์ ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝ๋ length ํ๋กํผํฐ ๊ฐ์ ๋ฐํํ๋ค.
const arr = [1, 2];
let result = arr.push(3, 4);
console.log(result); // 4
console.log(arr); [1, 2, 3, 4]
์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ํธ์ด ์ข๋ค.
const arr = [1, 2];
const newArr = [...arr, 3];
console.log(newArr); [1, 2, 3]
์๋ณธ ๋ฐฐ์ด์์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐํ ์์๋ฅผ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ด๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ค.
const arr = [1, 2];
let result = arr.pop();
console.log(result); // 2
console.log(arr); [1]
์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ชจ๋ ๊ฐ์ ์๋ณธ ๋ฐฐ์ด์ ์ ๋์ ์์๋ก ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝ๋ length ํ๋กํผํฐ ๊ฐ์ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ค.
const arr = [1, 2];
let result = arr.unshift(3, 4);
console.log(result); // 4
console.log(arr); // [3, 4, 1, 2]
์๋ณธ ๋ฐฐ์ด์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐํ ์์๋ฅผ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ด๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ค.
const arr = [1, 2];
let result = arr.shift();
console.log(result); // 1
console.log(arr); // [2]
์ธ์๋ก ์ ๋ฌ๋ ๊ฐ๋ค์ ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
์ธ์๋ก ์ ๋ฌํ ๊ฐ์ด ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ํด์ฒดํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ์์๋ก ์ถ๊ฐํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ฐํ๊ฐ์ ๋ฐ๋์ ๋ณ์์ ํ ๋น๋ฐ์์ผ ํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ์ค๊ฐ์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ค๊ฐ์ ์๋ ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
3๊ฐ์ ๋งค๊ฐ๋ณ์๊ฐ ์์ผ๋ฉฐ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ค.
- start: ์๋ณธ ๋ฐฐ์ด์ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์์ํ ์ธ๋ฑ์ค๋ค. start๋ง ์ง์ ํ๋ฉด ์๋ณธ ๋ฐฐ์ด์ start๋ถํฐ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค. start๊ฐ ์์์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋์์์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ธ๋ค.
- deleteCount: ์๋ณธ ๋ฐฐ์ด์ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์์ํ ์ธ๋ฑ์ค์ธ start๋ถํฐ ์ ๊ฑฐํ ์์์ ๊ฐ์๋ค. deleteCount๊ฐ 0์ธ ๊ฒฝ์ฐ ์๋ฌด๋ฐ ์์๋ ์ ๊ฑฐ๋์ง ์๋๋ค.
- items: ์ ๊ฑฐํ ์์น์ ์ฝ์ ํ ์์๋ค์ ๋ชฉ๋ก์ด๋ค. ์๋ตํ ๊ฒฝ์ฐ ์๋ณธ ๋ฐฐ์ด์์ ์์๋ค์ ์ ๊ฑฐํ๊ธฐ๋ง ํ๋ค.
const arr = [1, 2, 3, 4];
const result = arr.splice(1, 2, 20, 30);
console.log(result); // [2, 3];
console.log(arr); // [1, 20, 30, 4]
์ธ์๋ก ์ ๋ฌ๋ ๋ฒ์์ ์์๋ค์ ๋ณต์ฌํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
2๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ฉฐ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- start: ๋ณต์ฌ๋ฅผ ์์ํ ์ธ๋ฑ์ค. ์์์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋์์์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ธ๋ค.
- end: ๋ณต์ฌ๋ฅผ ์ข ๋ฃํ ์ธ๋ฑ์ค. ์ด ์ธ๋ฑ์ค์ ํด๋นํ๋ ์์๋ ๋ณต์ฌ๋์ง ์๋๋ค. ์๋ต ๊ฐ๋ฅํ๋ฉฐ ์๋ต ์ ๊ธฐ๋ณธ๊ฐ์ length ํ๋กํผํฐ ๊ฐ์ด๋ค.
slice์ ์ธ์๋ฅผ ๋ชจ๋ ์๋ตํ๋ฉด ์๋ณธ ๋ฐฐ์ด์ ์์ ๋ณต์ฌ๋ฅผ ํตํด ์์ฑํ ๋ณต์ฌ๋ณธ์ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ, ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฌธ์์ด, ์ฆ separator๋ก ์ฐ๊ฒฐํ ๋ฌธ์์ด์ ๋ฐํํ๋ค.
const arr = [1, 2, 3, 4];
// ๊ธฐ๋ณธ ๊ตฌ๋ถ์๋ ์ฝค๋ง
arr.join(); // -> '1,2,3,4'
arr.join(''); // -> '1234'
arr.join(':'); // -> 1:2:3:4
์๋ณธ ๋ฐฐ์ด์ ์์๋ฅผ ๋ฐ๋๋ก ๋ค์ง๋๋ค.
์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๊ณ ์ด ๋ณ๊ฒฝ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค.
const arr = [1, 2, 3];
const result = arr.reverse();
console.log(arr); // [3, 2, 1]
console.log(result); // [3, 2, 1]
์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฐ์ ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์์๋ก ์ฑ์ด๋ค. ์ด๋ ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
const arr = [1, 2, 3];
arr.fill(0);
console.log(arr); // [0, 0, 0]
๋๋ฒ์งธ ์ธ์๋ก ์์ ์ฑ์ฐ๊ธฐ๋ฅผ ์์ํ ์ธ๋ฑ์ค์ ์ธ๋ฒ์งธ ์ธ์๋ก ์์ ์ฑ์ฐ๊ธฐ๋ฅผ ๋ฉ์ถ ์ธ๋ฑ์ค๋ฅผ ์ ๋ฌํ ์ ์๋ค.
const arr = [1, 2, 3, 4, 5];
arr.fill(0, 1, 3);
console.log(arr); // [1, 0, 0, 4, 5]
๋ฐฐ์ด ๋ด์ ํน์ ์์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ์ฌ true ๋๋ false๋ฅผ ๋ฐํํ๋ค.
์ฒซ ๋ฒ์งธ ์ธ์: ๊ฒ์ํ ๋์
๋ ๋ฒ์งธ ์ธ์: ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค. ์๋ตํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ 0. ๋ง์ฝ ์์๋ฅผ ์ ๋ฌํ๋ฉด length ํ๋กํผํฐ ๊ฐ๊ณผ ์์ ์ธ๋ฑ์ค๋ฅผ ํฉ์ฐํ์ฌ ๊ฒ์ ์์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ค.
const arr = [1, 2, 3];
arr.includes(1, 1); // false
arr.includes(3, -1); // true
์ธ์๋ก ์ ๋ฌํ ๊น์ด๋งํผ ์ฌ๊ท์ ์ผ๋ก ๋ฐฐ์ด์ ํํํํ๋ค.
์ค์ฒฉ ๋ฐฐ์ด์ ํํํํ ๊น์ด๋ฅผ ์ธ์๋ก ์ ๋ฌํ ์ ์๋ค. ์ธ์ ์๋ต ์ ๊ธฐ๋ณธ๊ฐ์ 1.
์ธ์๋ก Infinity๋ฅผ ์ ๋ฌํ๋ฉด ์ค์ฒฉ ๋ฐฐ์ด ๋ชจ๋๋ฅผ ํํํํ๋ค.
[1, [2, [3, [4]]]].flat(); // -> [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(1); // -> [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(2); // -> [1, 2, 3, [4]]
[1, [2, [3, [4]]]].flat(Infinity); // -> [1, 2, 3, 4]
๊ณ ์ฐจ ํจ์๋ ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ๊ฑฐ๋ ํจ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ๋งํ๋ค.
๊ณ ์ฐจ ํจ์๋ ์ธ๋ถ ์ํ์ ๋ณ๊ฒฝ์ด๋ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ฅผ ํผํ๊ณ ๋ถ๋ณ์ฑ์ ์งํฅํ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ฐ์ ๋๊ณ ์๋ค.
๋ฐฐ์ด์ ์์๋ฅผ ์ ๋ ฌํ๋ค. ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํด ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฐํํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์์๋ฅผ ์ ๋ ฌํ๋ค.
const fruits = ['Banana', 'Orange', 'Apple'];
fruits.sort();
console.log(fruits); // ['Apple', 'Banana', 'Orange']
์ซ์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ์ ๋ ฌํ ๋๋ ์ ๋์ฝ๋ ํฌ์ธํธ์ ์์๋ฅผ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ํ ๋๋ก ์ ๋ ฌ๋์ง ์๋๋ค.
๋ฐ๋ผ์ ์ซ์ ์์๋ฅผ ์ ๋ ฌํ ๋๋ sort ๋ฉ์๋์ ์ ๋ ฌ ์์๋ฅผ ์ ์ํ๋ ๋น๊ต ํจ์๋ฅผ ์ธ์๋ก ์ ๋ฌํด์ผ ํ๋ค.
๋น๊ต ํจ์๋ ์์๋ ์์ ๋๋ 0์ ๋ฐํํ์ฌ ํจ์์ ๋ฐํ๊ฐ์ด 0๋ณด๋ค ์์ผ๋ฉด(์์) ๋น๊ต ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ฅผ ์ฐ์ ํ์ฌ ์ ๋ ฌํ๊ณ , 0์ด๋ฉด ์ ๋ ฌํ์ง ์์ผ๋ฉฐ, 0๋ณด๋ค ํฌ๋ฉด(์์) ๋ ๋ฒ์งธ ์ธ์๋ฅผ ์ฐ์ ํ์ฌ ์ ๋ ฌํ๋ค.
const points = [40, 100, 1, 5, 2, 25, 10];
points.sort();
console.log(points); // [1, 10, 100, 2, 25, 40, 5]
points.sort((a, b) => a - b);
console.log(points); // [1, 2, 5, 10, 25, 40, 100]
// ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
points.sort((a, b) => b - a);
console.log(points); // [100, 40, 25, 10, 5, 2, 1]
๋ฐ๋ณต์ ์ํ ๋ณ์๋ฅผ ์ ์ธํด์ผ ํ๋ฉฐ, ์กฐ๊ฑด์๊ณผ ์ฆ๊ฐ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ด ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ์ถ๊ตฌํ๋ ๋ฐ์ ๋ง์ง ์๋ for ๋ฌธ ๋์ ์ฌ์ฉํ ์ ์๋ ๊ณ ์ฐจ ํจ์๋ค.
forEach ๋ฉ์๋๋ ๋ด๋ถ์์ ๋ฐ๋ณต๋ฌธ์ ํตํด ์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ํํด์ผ ํ ์ฒ๋ฆฌ๋ฅผ ์ฝ๋ฐฑ ํจ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐ๋ณต ํธ์ถํ๋ค.
const numbers = [1, 2, 3];
const pows = [];
numbers.forEach(item => pows.push(item ** 2));
console.log(pows); // [1, 4, 9]
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์์ง๋ง ์ฝ๋ฐฑ ํจ์๋ฅผ ํตํด ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ ์๋ ์๋ค.
์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๋ฉด์ 3๊ฐ(์์๊ฐ, ์ธ๋ฑ์ค, this)์ ์ธ์๋ฅผ ์ ๋ฌํ๋ค.
forEach์ ๋ฐํ๊ฐ์ ์ธ์ ๋ undefined๋ค.
for ๋ฌธ๊ณผ ๋ฌ๋ฆฌ break, continue ๋ฌธ์ ์ฌ์ฉํด ์ค๊ฐ์ ์ํ๋ฅผ ์ค๋จํ ์ ์๋ค.
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ๋ค๋ก ๊ตฌ์ฑ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค. ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ X.
const numbers = [1, 4, 9];
const roots = number.map(item => Math.sqrt(item));
console.log(roots); // [1, 2, 3]
console.log(numbers); // [1, 4, 9]
map ๋ฉ์๋๊ฐ ์์ฑํ์ฌ ๋ฐํํ๋ ์๋ก์ด ๋ฐฐ์ด์ length ํ๋กํผํฐ ๊ฐ์ map ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด์ length ํ๋กํผํฐ ๊ฐ๊ณผ ๋ฐ๋์ ์ผ์นํ๋ค. ์ฆ, ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด๊ณผ map ๋ฉ์๋๊ฐ ์์ฑํ์ฌ ๋ฐํํ ๋ฐฐ์ด์ 1:1 ๋งคํํ๋ค.
๋ ๋ฒ์งธ ์ธ์๋ก map ๋ฉ์๋์ ์ฝ๋ฐฑ ํจ์ ๋ด๋ถ์์ this๋ก ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ ์ ์๋ค.
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ์ด true์ธ ์์๋ก๋ง ๊ตฌ์ฑ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
const numbers = [1, 2, 3, 4, 5];
const odds = numbers.filter(item => item % 2);
console.log(odds); // [1, 3, 5]
filter ๋ฉ์๋๊ฐ ์์ฑํ์ฌ ๋ฐํํ ์๋ก์ด ๋ฐฐ์ด์ length ํ๋กํผํฐ ๊ฐ์ filter ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด์ length ํ๋กํผํฐ ๊ฐ๊ณผ ๊ฐ๊ฑฐ๋ ์๋ค.
์์ ์ ํธ์ถํ ๋ฐฐ์ด์์ ํน์ ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ค.
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ๋ฐ๋ณต ํธ์ถํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ์ ๋ค์ ์ํ ์์ ์ฝ๋ฐฑ ํจ์์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ๋ฉด์ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ์ฌ ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ง๋ค์ด ๋ฐํํ๋ค.
reduce ๋ฉ์๋์ ์ธ์
์ฒซ ๋ฒ์งธ: ์ฝ๋ฐฑ ํจ์
๋ ๋ฒ์งธ: ์ด๊ธฐ๊ฐ
reduce ๋ฉ์๋์ ์ฝ๋ฐฑ ํจ์์ ์ธ์
์ฒซ ๋ฒ์งธ: ์ด๊ธฐ๊ฐ ๋๋ ์ฝ๋ฐฑ ํจ์ ์ด์ ๋ฐํ๊ฐ
๋ ๋ฒ์งธ: reduce ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด์ ์์๊ฐ
์ธ ๋ฒ์งธ: reduce ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด์ ์ธ๋ฑ์ค
๋ค ๋ฒ์งธ: reduce ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ฐฐ์ด์ ์์ฒด
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๋ค.
์ด๋ some ๋ฉ์๋๋ ์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ์ด ๋จ ํ ๋ฒ์ด๋ผ๋ ์ฐธ์ด๋ฉด true, ๋ชจ๋ ๊ฑฐ์ง์ด๋ฉด false๋ฅผ ๋ฐํํ๋ค.
ํธ์ถํ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ด๋ฉด ์ธ์ ๋ false๋ฅผ ๋ฐํ.
[5, 10, 15].some(item => item > 10); // -> true
[5, 10, 15].some(item => item < 0); // -> false
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ๋ค.
์ด๋ every ๋ฉ์๋๋ ์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ์ด ๋ชจ๋ ์ฐธ์ด๋ฉด true, ๋จ ํ ๋ฒ์ด๋ผ๋ ๊ฑฐ์ง์ด๋ฉด false๋ฅผ ๋ฐํํ๋ค.
ํธ์ถํ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ด๋ฉด ์ธ์ ๋ true๋ฅผ ๋ฐํ.
[5, 10, 15].every(item => item > 3); // -> true
[5, 10, 15].every(item => item > 10); // -> false
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ฐํ๊ฐ์ด true์ธ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๋ฐํํ๋ค.
์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ์ด true์ธ ์์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.
const users = [
{ id: 1, name: 'Lee' },
{ id: 2, name: 'Kim' },
{ id: 3, name: 'Choi' },
{ id: 4, name: 'Park' }
];
users.find(user => user.id === 2); // -> {id: 2, name: 'Kim'}
์์ ์ ํธ์ถํ ๋ฐฐ์ด์ ์์๋ฅผ ์ํํ๋ฉด์ ์ธ์๋ก ์ ๋ฌ๋ ์ฝ๋ฐฑ ใ ใ ์๋ฅผ ํธ์ถํ์ฌ ๋ฐํ๊ฐ์ด ture์ธ ์ฒซ ๋ฒ์งธ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
์ฝ๋ฐฑ ํจ์์ ๋ฐํ๊ฐ์ด true์ธ ์์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ๋ฐํํ๋ค.
map ๋ฉ์๋๋ฅผ ํตํด ์์ฑ๋ ์๋ก์ด ๋ฐฐ์ด์ ํํํํ๋ค.
์ฆ, map ๋ฉ์๋์ flat ๋ฉ์๋๋ฅผ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ํจ๊ณผ๊ฐ ์๋ค.
const arr = ['hello', 'world'];
arr.map(x => x.split('')).flat();
// -> ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
arr.flatMap(x => x.split(''));
// -> ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
flat ๋ฉ์๋์ฒ๋ผ ์ธ์๋ฅผ ์ ๋ฌํ์ฌ ํํํ ๊น์ด๋ฅผ ์ง์ ํ ์๋ ์๊ณ 1๋จ๊ณ๋ง ํํํํ๋ค.