โ ํ๋ก๊ทธ๋๋จธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ ๋ฌธ๊ฐ๋ก ํ์ํ ์ฌ๋๋ค์ด๋ค. ๊ทธ๋ค์ ์ด๋ ๋ค.
1) ๋ฏธ์์ ๋ฌธ์์์ ๋์จ ๋ฏธ์์ ๋ํ์ ๊ธฐ๋ฐํ ๋ชจํธํ ๊ฐ์ ๋ค๋ก๋ถํฐ ๋ฏธ์ธํ ์์ค๊น์ง ๊ณ์ฐํด์ ๋ต๋ณํ๊ฑฐ๋,
2) ๋ฌด์ธ๊ฐ๋ฅผ ๋ฌป๊ธฐ ํ๋ค ์ ๋๋ก ์์ ํ ๊ฑธ๋ ๊ฐ ๋ ๋ถ์๋ฅผ ๊ดด๋กญํ๊ธฐ ์ํด, ์ ๋งคํ๊ฒ ๋ฌป๋ ์ฌ๋๋ค์ด ์ ์ํ๋ ๋ถ์ ํํ ์๋จ๋ค์ ๋ฐํ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ์ฌ๋๋ค์ด๋ค. โ- IEEE Grid newsmagazine
์ก์ง

์๋ฐ์คํฌ๋ฆฝํธ Array ๋ฉ์๋
๋ฐฐ์ด ๋ฆฌํฐ๋ด
const arr = [
'zero', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine'
];
โ
๋ฐฐ์ด ์์ฑ์
const arr = new Array(1, 2, 3);
const arr2 = new Array(20); // ์ธ์ ํ๋๋ง ๋๊ฒจ์ค๋๋ ๊ทธ ์ธ์๊ฐ ๋ฐฐ์ด๊ธธ์ด
arr2.length // 20
๋ฐฐ์ด Method
- โโ๏ธ ๋ฉ์๋๋ this(์๋ณธ ๋ฐฐ์ด)๋ฅผ ๋ณ๊ฒฝํ๋ค.
- ๐ ๋ฉ์๋๋ this(์๋ณธ ๋ฐฐ์ด)๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
Array.isArray(arg) : boolean
์ ์ ๋ฉ์๋ Array.isArray๋ ์ฃผ์ด์ง ์ธ์๊ฐ ๋ฐฐ์ด์ด๋ฉด true, ๋ฐฐ์ด์ด ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
โ
Array.from
ES6์์ ์๋กญ๊ฒ ๋์ ๋ Array.from ๋ฉ์๋๋ ํน์ ๊ฐ์ฒด๋ฅผ ๋ณํํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ๋ค.
๋ณํ ํ ์ ์๋ ํน์ ํ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ ์ฌ๋ฐฐ์ด ๊ฐ์ฒด(array-like objects) : length ํ๋กํผํฐ์ ์ธ๋ฑ์ค ๋ ์์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด
- ์ดํฐ๋ฌ๋ธ ๊ฐ์ฒด (iterable objects) : Map๊ณผ Set ๊ฐ์ฒด ๋ฐ ๋ฌธ์์ด๊ณผ ๊ฐ์ด ํด๋น ์์๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ํํ ์ ์๋ ๊ฐ์ฒด
// ๋ฌธ์์ด์ ์ดํฐ๋ฌ๋ธ์ด๋ค.
const arr1 = Array.from('Hello');
console.log(arr1); // [ 'H', 'e', 'l', 'l', 'o' ]
// ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์๋ก์ด ๋ฐฐ์ด์ ๋ณํํ์ฌ ๋ฐํํ๋ค.
const arr2 = Array.from({ length: 2, 0: 'a', 1: 'b' });
console.log(arr2); // [ 'a', 'b' ]
// Array.from์ ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์์๊ฒ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํด ํธ์ถํ ํจ์๋ฅผ ์ ๋ฌํ ์ ์๋ค.
// ์ด ํจ์๋ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์์๊ฒ ์ ๋ฌ๋ ์ธ์๋ก ์์ฑ๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ํธ์ถ๋๋ค.
const arr3 = Array.from({ length: 5 }, function (v, i) { return i; });
console.log(arr3); // [ 0, 1, 2, 3, 4 ]
โ
Array.of
ES6์์ ์๋กญ๊ฒ ๋์ ๋ Array.of ๋ฉ์๋๋ ์ ๋ฌ๋ ์ธ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
Array.of๋ Array ์์ฑ์ ํจ์์ ๋ค๋ฅด๊ฒ ์ ๋ฌ๋ ์ธ์๊ฐ 1๊ฐ์ด๊ณ ์ซ์์ด๋๋ผ๋ ์ธ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
// ์ ๋ฌ๋ ์ธ์๊ฐ 1๊ฐ์ด๊ณ ์ซ์์ด๋๋ผ๋ ์ธ์๋ฅผ ์์๋ก ๊ฐ๋ ๋ฐฐ์ด์ ์์ฑํ๋ค.
const arr1 = Array.of(1);
console.log(arr1); // // [1]
const arr2 = Array.of(1, 2, 3);
console.log(arr2); // [1, 2, 3]
const arr3 = Array.of('string');
console.log(arr3); // 'string'
โ
โ๏ธ Array.fill(value, start, end)
๋ฐฐ์ด์ ์์ ์ธ๋ฑ์ค๋ถํฐ ๋ ์ธ๋ฑ์ค ์ด์ (๋ ์ธ๋ฑ์ค ์๊ธฐ์์ ์ ๋ฏธํฌํจ) ๊น์ง ํ๋์ ๊ฐ์ผ๋ก ์ฑ์์ฃผ๋ ๋ฉ์๋์ด๋ค.
์๋ณธ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ฉฐ, ๋ฆฌํด๊ฐ์ ๋ณํํ ๋ฐฐ์ด์ด๋ค.
- value : ๋ฐฐ์ด์ ์ฑ์ธ ๊ฐ.
- start : ์์์ธ๋ฑ์ค, ๊ธฐ๋ณธ๊ฐ 0. ์ต์
- end : ๋์ธ๋ฑ์ค, ๊ธฐ๋ณธ๊ฐ arr.length. ์ต์
// ๊ธธ์ด๊ฐ 6์ด๊ณ ๋ฐฐ์ด์ ์์๊ฐ ๋ชจ๋ 0์ธ ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ
// ๋ฆฌํฐ๋ด ๋ฐฉ๋ฒ
const zeroArray = [0, 0, 0, 0, 0, 0];
// fill()๋ฉ์๋ ๋ฐฉ๋ฒ
const zeroArray2 = Array(6).fill(0);
console.log(nullArray); // [0, 0, 0, 0, 0, 0]
[1, 2, 3].fill(4) // [4, 4, 4] ๋ชจ๋ 4๋ก ์ฑ๋ฃธ
[1, 2, 3].fill(4, 1) // [1, 4, 4] 1๋ฒ์งธ ์ธ๋ฑ์ค ๋ถํฐ ์ญ 4๋ก ์ฑ์
[1, 2, 3].fill(4, 1, 2) // [1, 4, 3] 1๋ฒ์งธ์์ 2๋ฒ์งธ ์ธ๋ฑ์ค ์ ๊น์ง 4๋ก ์ฑ์
// fill ()์ ์ฌ์ฉํ์ฌ ๋ชจ๋ 1์ ํ๋ ฌ(2์ฐจ์ ๋ฐฐ์ด) ๋ง๋ค๊ธฐ
const arr = new Array(3);
for (let i=0; i<arr.length; i++) {
arr[i] = new Array(4).fill(1); // ํฌ๊ธฐ๊ฐ 4์ด๊ณ 1๋ก ์ฑ์์ง ๋ฐฐ์ด ์์ฑ
}
console.log(arr[0][0]); // 1
console.log(arr[1][0]); // 1
console.log(arr[2][0]); // 1
๐ Array.prototype.indexOf(searchElement, fromIndex) : number
์๋ณธ ๋ฐฐ์ด์์ ์ธ์๋ก ์ ๋ฌ๋ ์์๋ฅผ ๊ฒ์ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
- ์ค๋ณต๋๋ ์์๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
- ํด๋นํ๋ ์์๊ฐ ์๋ ๊ฒฝ์ฐ, -1์ ๋ฐํํ๋ค.
โ๋๋ฒ์งธ ์ธ์๋ ๊ฒ์์ ์์ํ ์ธ๋ฑ์ค์ด๋ค. ๋๋ฒ์งธ ์ธ์๋ฅผ ์๋ตํ๋ฉด ์ฒ์๋ถํฐ ๊ฒ์ํ๋ค.
indexOf ๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ๋ ์ ์ฉํ๋ค.
const foods = ['apple', 'banana', 'orange'];
// foods ๋ฐฐ์ด์ 'orange' ์์๊ฐ ์กด์ฌํ๋์ง ํ์ธ
if (foods.indexOf('orange') === -1) { // == if (!foods.includes('orange')) { }
foods.push('orange');
}
console.log(foods); // ["apple", "banana", "orange"]
โ
๐ Array.prototype.concat(โฆitems) : T[]
์ธ์๋ก ์ ๋ฌ๋ ๊ฐ๋ค(๋ฐฐ์ด ๋๋ ๊ฐ)์ ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
์ธ์๋ก ์ ๋ฌํ ๊ฐ์ด ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ํด์ฒดํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ์์๋ก ์ถ๊ฐํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
const arr1 = [1, 2];
const arr2 = [3, 4];
// ๋ฐฐ์ด arr2๋ฅผ ์๋ณธ ๋ฐฐ์ด arr1์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
// ์ธ์๋ก ์ ๋ฌํ ๊ฐ์ด ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ํด์ฒดํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ์์๋ก ์ถ๊ฐํ๋ค.
let result = arr1.concat(arr2);
console.log(result); // [1, 2, 3, 4]
// ์ซ์๋ฅผ ์๋ณธ ๋ฐฐ์ด arr1์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
result = arr1.concat(3);
console.log(result); // [1, 2, 3]
// ๋ฐฐ์ด arr2์ ์ซ์๋ฅผ ์๋ณธ ๋ฐฐ์ด arr1์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
result = arr1.concat(arr2, 5);
console.log(result); // [1, 2, 3, 4, 5]
// ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
console.log(arr1); // [1, 2]
โ
๐ Array.prototype.join(separator) : string
์๋ณธ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ, ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฐ, ์ฆ ๊ตฌ๋ถ์(separator)๋ก ์ฐ๊ฒฐํ ๋ฌธ์์ด์ ๋ฐํํ๋ค.
๊ตฌ๋ถ์(separator)๋ ์๋ต ๊ฐ๋ฅํ๋ฉฐ ๊ธฐ๋ณธ ๊ตฌ๋ถ์๋ ,์ด๋ค.
const arr = [1, 2, 3, 4];
// ๊ธฐ๋ณธ ๊ตฌ๋ถ์๋ ','์ด๋ค.
// ์๋ณธ ๋ฐฐ์ด arr์ ๋ชจ๋ ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ, ๊ธฐ๋ณธ ๊ตฌ๋ถ์ ','๋ก ์ฐ๊ฒฐํ ๋ฌธ์์ด์ ๋ฐํ
let result = arr.join();
console.log(result); // '1,2,3,4';
// ์๋ณธ ๋ฐฐ์ด arr์ ๋ชจ๋ ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ, ๋น๋ฌธ์์ด๋ก ์ฐ๊ฒฐํ ๋ฌธ์์ด์ ๋ฐํ
result = arr.join('');
console.log(result); // '1234'
// ์๋ณธ ๋ฐฐ์ด arr์ ๋ชจ๋ ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ, ๊ตฌ๋ถ์ ':'๋ก ์ฐ๊ฒฐํ ๋ฌธ์์ด์ ๋ฐํ
result = arr.join(':');
console.log(result); // '1:2:3:4'
โ
โ๏ธ Array.prototype.push(โฆitems) : number
์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ชจ๋ ๊ฐ์ ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง์ ์์๋ก ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝ๋ length ๊ฐ์ ๋ฐํํ๋ค.
โ
๐ก push ๋ฉ์๋์ concat ๋ฉ์๋๋ ์ ์ฌํ๊ฒ ๋์ํ์ง๋ง ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์๋ค.
- push ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ์ง๋ง,
- concat ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
const arr1 = [1, 2];
// push ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ค.
arr1.push(3, 4);
console.log(arr1); // [1, 2, 3, 4]
const arr2 = [1, 2];
// concat ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํ๋ค.
const result = arr2.concat(3, 4);
console.log(result); // [1, 2, 3, 4]
๐ก ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฐ์ด ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ,
- push ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ทธ๋๋ก ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ์ง๋ง
- concat ๋ฉ์๋๋ ๋ฐฐ์ด์ ํด์ฒดํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ๋ค.
const arr1 = [1, 2];
// ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด์ ๊ทธ๋๋ก ์๋ณธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ๋ค
arr1.push([3, 4]);
console.log(arr1); // [1, 2, [3, 4]]
const arr2 = [1, 2];
// ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด์ ํด์ฒดํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ์ถ๊ฐํ๋ค
const result = arr2.concat([3, 4]);
console.log(result); // [1, 2, 3, 4]
โ
๐ก push ๋ฉ์๋๋ ์ฑ๋ฅ๋ฉด์์ ์ข์ง ์๋ค.
push ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ง์ง๋ง์ ์์๋ฅผ ์ถ๊ฐํ๋ฏ๋ก length ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ์์๋ฅผ ์ถ๊ฐํ ์๋ ์๋ค.
์ด ๋ฐฉ๋ฒ์ด push ๋ฉ์๋๋ณด๋ค ๋น ๋ฅด๋ค.
const arr = [1, 2];
// arr.push(3)์ ๋์ผํ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ์ด ๋ฐฉ๋ฒ์ด push ๋ฉ์๋๋ณด๋ค ๋น ๋ฅด๋ค.
arr[arr.length] = 3;
console.log(arr); // [1, 2, 3]
โ
๐ก push ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ ๋ถ์ ํจ๊ณผ๊ฐ ์๋ค. ๋ฐ๋ผ์ push ๋ฉ์๋๋ณด๋ค๋ ES6์ spread ๋ฌธ๋ฒ(์ ๊ฐ์ฐ์ฐ์)์ ์ฌ์ฉํ๋ ํธ์ด ์ข๋ค.
const arr = [1, 2];
// ES6 spread ๋ฌธ๋ฒ
const newArr = [...arr, 3];
// arr.push(3);
console.log(newArr); // [1, 2, 3]
โ
โ๏ธ Array.prototype.pop() : T | undefined
์๋ณธ ๋ฐฐ์ด์์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐํ ์์๋ฅผ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ด๋ฉด undefined๋ฅผ ๋ฐํํ๋ค.
pop ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด์ ์ง์ ๋ณ๊ฒฝํ๋ค.
const a = ['a', 'b', 'c'];
const c = a.pop();
// ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
console.log(a); // a --> ['a', 'b']
console.log(c); // c --> 'c'
โ
โ๏ธ Array.prototype.shift() : T | undefined
๋ฐฐ์ด์์ ์ฒซ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐํ ์์๋ฅผ ๋ฐํํ๋ค.
๋ง์ฝ ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ undefined๋ฅผ ๋ฐํํ๋ค. shift ๋ฉ์๋๋ ๋์ ๋ฐฐ์ด ์์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ค.
โ
๐ฅ shift๋ push์ ํจ๊ป ๋ฐฐ์ด์ ํ(FIFO: First In First Out)์ฒ๋ผ ๋์ํ๊ฒ ํ๋ค.
const arr = [];
arr.push(1); // [1]
arr.push(2); // [1, 2]
arr.push(3); // [1, 2, 3]
arr.shift(); // [2, 3]
arr.shift(); // [3]
arr.shift(); // []

โ
โ๏ธ Array.prototype.reverse() : this
๋ฐฐ์ด ์์์ ์์๋ฅผ ๋ฐ๋๋ก ๋ณ๊ฒฝํ๋ค.
์ด๋ ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค. ๋ฐํ๊ฐ์ ๋ณ๊ฒฝ๋ ๋ฐฐ์ด์ด๋ค.
โ
โ
๐ Array.prototype.slice(start, end) : T[]
์ธ์๋ก ์ง์ ๋ ๋ฐฐ์ด์ ๋ถ๋ถ์ ๋ณต์ฌํ์ฌ ๋ฐํํ๋ค.
์๋ณธ ๋ฐฐ์ด์ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
- start : ๋ณต์ฌ๋ฅผ ์์ํ ์ธํ ์ค. ์์์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋์์์ ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ธ๋ค. ์๋ฅผ ๋ค์ด slice(-2)๋ ๋ฐฐ์ด์ ๋ง์ง๋ง 2๊ฐ์ ์์๋ฅผ ๋ฐํํ๋ค.
- end : ์ต์ ์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ length ๊ฐ์ด๋ค.
const items = ['a', 'b', 'c'];
// items[0]๋ถํฐ items[1] ์ด์ (items[1] ๋ฏธํฌํจ)๊น์ง ๋ฐํ
let res = items.slice(0, 1);
console.log(res); // [ 'a' ]
// items[1]๋ถํฐ items[2] ์ด์ (items[2] ๋ฏธํฌํจ)๊น์ง ๋ฐํ
res = items.slice(1, 2);
console.log(res); // [ 'b' ]
// items[1]๋ถํฐ ์ดํ์ ๋ชจ๋ ์์ ๋ฐํ
res = items.slice(1);
console.log(res); // [ 'b', 'c' ]
// ์ธ์๊ฐ ์์์ธ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋์์ ์์๋ฅผ ๋ฐํ
res = items.slice(-1);
console.log(res); // [ 'c' ]
res = items.slice(-2);
console.log(res); // [ 'b', 'c' ]
// ๋ชจ๋ ์์๋ฅผ ๋ฐํ (= ๋ณต์ฌ๋ณธ(shallow copy) ์์ฑ)
res = items.slice();
console.log(res); // [ 'a', 'b', 'c' ]

โ
โ
๐ก slice ๋ฉ์๋์ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ์๋ณธ ๋ฐฐ์ด์ ๋ณต์ฌ๋ณธ์ ์์ฑํ์ฌ ๋ฐํํ๋ค. ์ด๋ ์๋ณธ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์์ ๋ณต์ฌ(shallow copy)ํ์ฌ ์๋ก์ด ๋ณต์ฌ๋ณธ์ ์์ฑํ๋ค.
const todos = [
{ id: 1, content: 'HTML', completed: false },
{ id: 2, content: 'CSS', completed: true },
{ id: 3, content: 'Javascript', completed: false }
];
// shallow copy
const _todos = todos.slice();
// const _todos = [...todos];
console.log(_todos === todos); // false
// ๋ฐฐ์ด์ ์์๋ ๊ฐ๋ค. ์ฆ, ์์ ๋ณต์ฌ๋์๋ค.
console.log(_todos[0] === todos[0]); // true
โ
๐ก ์ด๋ฅผ ์ด์ฉํ์ฌ arguments, HTMLCollection, NodeList์ ๊ฐ์ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด(Array-like Object)๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ ์ ์๋ค.
function sum() {
// ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด => Array
const arr = Array.prototype.slice.call(arguments); // [1, 2, 3]
const arr0 = [].slice.call(arguments); // [1, 2, 3]
// Spread ๋ฌธ๋ฒ
const arr1 = [...arguments]; // [1, 2, 3]
// Array.from ๋ฉ์๋๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ์ฌ ๋ฐฐ์ด์ ์์ฑํ๋ค.
const arr2 = Array.from(arguments); // [1, 2, 3]
}
console.log(sum(1, 2, 3));
โ
โ๏ธ Array.prototype.splice(start, deleteCount, โฆitems) : T[]
- start : ๋ฐฐ์ด์์์ ์์ ์์น ์ธ๋ฑ์ค ์ด๋ค. start ๋ง์ ์ง์ ํ๋ฉด ๋ฐฐ์ด์ start๋ถํฐ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค.
- deleteCount : ์์ ์์น(start)๋ถํฐ ์ ๊ฑฐํ ์์์ ์์ด๋ค. deleteCount๊ฐ 0์ธ ๊ฒฝ์ฐ, ์๋ฌด๋ฐ ์์๋ ์ ๊ฑฐ๋์ง ์๋๋ค. (์ต์ )
- items : ์ญ์ ํ ์์น์ ์ถ๊ฐ๋ ์์๋ค์ด๋ค. ๋ง์ฝ ์๋ฌด๋ฐ ์์๋ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ, ์ญ์ ๋ง ํ๋ค. (์ต์ )
์ด 3๊ฐ์ง์ ๊ธฐ๋ฅ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค.
1) ๋ฐฐ์ด ์์ ์ถ๊ฐ (์ญ์ ์ํ๊ณ ์ถ๊ฐ)
2) ๋ฐฐ์ด ์์ ๊ต์ฒด (์ญ์ ํ๊ณ ์ถ๊ฐ)
3) ๋ฐฐ์ด ์์ ์ญ์ (์ถ๊ฐ ์ํ๊ณ ์ญ์ )
- ๋ฐํ๊ฐ์ ์ญ์ ํ ์์๋ค์ ๊ฐ์ง ๋ฐฐ์ด์ด๋ค.
โ
๐ก ์ด ๋ฉ์๋์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์ ๋ฐฐ์ด์์ ์์๋ฅผ ์ญ์ ํ ๋๋ค.
const items1 = [1, 2, 3, 4];
// items[1]๋ถํฐ 2๊ฐ์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐ๋ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
const res1 = items1.splice(1, 2);
// ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
console.log(items1); // [ 1, 4 ]
// ์ ๊ฑฐํ ์์๊ฐ ๋ฐฐ์ด๋ก ๋ฐํ๋๋ค.
console.log(res1); // [ 2, 3 ]
// -------------------------------------------
const items2 = [1, 2, 3, 4];
// items[1]๋ถํฐ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐ๋ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํ
const res2 = items2.splice(1);
// ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
console.log(items2); // [ 1 ]
// ์ ๊ฑฐํ ์์๊ฐ ๋ฐฐ์ด๋ก ๋ฐํ๋๋ค.
console.log(res2); // [ 2, 3, 4 ]

โ
โ
๐ก ๋ฐฐ์ด์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐํ ์์น์ ๋ค๋ฅธ ์์๋ฅผ ์ถ๊ฐํ๋ค. (๊ต์ฒด)
const items = [1, 2, 3, 4];
// items[1]๋ถํฐ 2๊ฐ์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๊ทธ์๋ฆฌ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ค. ์ ๊ฑฐ๋ ์์๊ฐ ๋ฐํ๋๋ค.
const res = items.splice(1, 2, 20, 30);
// ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
console.log(items); // [ 1, 20, 30, 4 ]
// ์ ๊ฑฐํ ์์๊ฐ ๋ฐฐ์ด๋ก ๋ฐํ๋๋ค.
console.log(res); // [ 2, 3 ]

โ
โ
๐ก ๋ฐฐ์ด ์ค๊ฐ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ ๋๋ ์ฌ์ฉ๋๋ค. (0๊ฐ๋ฅผ ์ญ์ )
const items = [1, 2, 3, 4];
// items[1]๋ถํฐ 0๊ฐ์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๊ทธ์๋ฆฌ(items[1])์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ค. ์ ๊ฑฐ๋ ์์๊ฐ ๋ฐํ๋๋ค.
const res = items.splice(1, 0, 100);
// ์๋ณธ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋๋ค.
console.log(items); // [ 1, 100, 2, 3, 4 ]
// ์ ๊ฑฐํ ์์๊ฐ ๋ฐฐ์ด๋ก ๋ฐํ๋๋ค.
console.log(res); // [ ]
โ
๐ก ๋ฐฐ์ด ์ค๊ฐ์ ๋ฐฐ์ด์ ์ถ๊ฐํ ๋๋ ์ฌ์ฉ๋๋ค.
const items = [1, 4];
const items2 = [2, 3];
// ์๋ณธ๋ฐฐ์ด item๋ฅผ ์๊ท๋จผํธ ์ธ์๋ก items2๋ฅผ ๋ฐ์์,
// items[1]๋ถํฐ 0๊ฐ์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๊ทธ์๋ฆฌ(items[1])์ ์๋ก์ด ๋ฐฐ์ด๋ฅผ ์ถ๊ฐํ๋ค.
// ์ด๋ ๊ฒ ํ๋ฉด ์๊ท๋จผํธ๊ฐ 2์ฐจ์ํํ๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค. ( 1, [ 2, 3 ], 4 )
items.splice(1, 0, items2);
// apply๋ก items๋ฅผ ์ฃผ๊ณ , [1, 0].concat([2, 3])์ ๊ฒฐ๊ณผ ์ธ์ 1,0, 2,3์ ์ฃผ๊ฒ๋๋ ๊ผด์ด ๋๋ค.
Array.prototype.splice.apply(items, [1, 0].concat([2, 3]));
items.splice(1,0, 2,3)
// == [].splice.apply(items, [1, 0].concat([2, 3]));
// == items.splice(1, 0, ...items);
console.log(items); // [ 1, 2, 3, 4 ]
slice๋ ๋ฐฐ์ด์ ์ผ๋ถ๋ถ์ ๋ณต์ฌํด์ ๋ฐํํ๋ฉฐ ์๋ณธ์ ํผ์ํ์ง ์๋๋ค.
splice๋ ๋ฐฐ์ด์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐํ ์์น์ ๋ค๋ฅธ ์์๋ฅผ ์ถ๊ฐํ๋ฉฐ ์๋ณธ์ ํผ์ํ๋ค.
๋ฉ์๋ | ์ค๋ช |
Array.isArray() | ์ ๋ฌ๋ ๊ฐ์ด Array ๊ฐ์ฒด์ธ์ง ์๋์ง๋ฅผ ๊ฒ์ฌํจ. |
Array.from() | ๋ฐฐ์ด๊ณผ ๋น์ทํ ๊ฐ์ฒด์ ๋ฐ๋ณตํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ๋ณํํจ. |
Array.of() | ์ธ์์ ์๋ ํ์ ์ ์๊ด์์ด ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ก์ด Array ์ธ์คํด์ค๋ฅผ ์์ฑํจ. |
ํ๋กํ ํ์
๋ฉ์๋ |
์ค๋ช |
push() | ํ๋ ์ด์์ ์์๋ฅผ ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐํ๊ณ , ๋ฐฐ์ด์ ์ด ๊ธธ์ด๋ฅผ ๋ฐํํจ. |
pop() | ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ๊ทธ ์ ๊ฑฐ๋ ์์๋ฅผ ๋ฐํํจ. |
shift() | ๋ฐฐ์ด์ ๊ฐ์ฅ ์ฒซ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ๊ทธ ์ ๊ฑฐ๋ ์์๋ฅผ ๋ฐํํจ. |
unshift() | ํ๋ ์ด์์ ์์๋ฅผ ๋ฐฐ์ด์ ๊ฐ์ฅ ์์ ์ถ๊ฐํ๊ณ , ๋ฐฐ์ด์ ์ด ๊ธธ์ด๋ฅผ ๋ฐํํจ. |
reverse() | ๋ฐฐ์ด ์์์ ์์๋ฅผ ์ ๋ถ ๋ฐ๋๋ก ๊ต์ฒดํจ. |
sort() | ํด๋น ๋ฐฐ์ด์ ๋ฐฐ์ด ์์๋ค์ ์ํ๋ฒณ ์์์ ๋ฐ๋ผ ์ ๋ ฌํจ. |
splice() | ๊ธฐ์กด์ ๋ฐฐ์ด ์์๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์๋ก์ด ๋ฐฐ์ด ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํจ. |
copyWithin() | ํด๋น ๋ฐฐ์ด์์ ์ผ๋ จ์ ์์๋ค์ ๋ณต์ฌํ์ฌ, ๋ช ์๋ ์์น์ ์์๋ค์ ๊ต์ฒดํจ. |
fill() | ์์ ์ธ๋ฑ์ค๋ถํฐ ์ข ๋ฃ ์ธ๋ฑ์ค ๋ฐ๋ก ์๊น์ง์ ๋ชจ๋ ๋ฐฐ์ด ์์๋ฅผ ํน์ ๊ฐ์ผ๋ก ๊ต์ฒดํจ. |
join() | ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ฐํํจ. |
slice() | ์ ๋ฌ๋ฐ์ ์์ ์ธ๋ฑ์ค๋ถํฐ ์ข ๋ฃ ์ธ๋ฑ์ค ๋ฐ๋ก ์๊น์ง์ ๋ชจ๋ ๋ฐฐ์ด ์์๋ฅผ ์ถ์ถํ์ฌ ๋ง๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํจ. |
concat() | ํด๋น ๋ฐฐ์ด์ ๋ค์ ์ธ์๋ก ์ ๋ฌ๋ฐ์ ๋ฐฐ์ด์ ํฉ์ณ์ ๋ง๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํจ. |
toString() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ฐํํจ. |
toLocaleString() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๋ฌธ์์ด๋ก ๋ฐํํจ. |
indexOf() | ์ ๋ฌ๋ฐ์ ๊ฐ๊ณผ ๋์ผํ ๋ฐฐ์ด ์์๊ฐ ์ฒ์์ผ๋ก ๋ฑ์ฅํ๋ ์์น์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํจ. |
lastIndexOf() | ์ ๋ฌ๋ฐ์ ๊ฐ๊ณผ ๋์ผํ ๋ฐฐ์ด ์์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฑ์ฅํ๋ ์์น์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํจ. |
forEach() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ๋ช ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํจ. |
map() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ๋ช ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ ํ, ๊ทธ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํจ. |
filter() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ๋ช ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ ํ, ๊ทธ ๊ฒฐ๊ด๊ฐ์ด true์ธ ์์๋ค๋ง์ ์๋ก์ด ๋ฐฐ์ด์ ๋ด์ ๋ฐํํจ. |
every() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ๋ช ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ ํ, ๊ทธ ๊ฒฐ๊ด๊ฐ์ด ๋ชจ๋ true์ผ ๋์๋ง true๋ฅผ ๋ฐํํจ. |
some() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ๋ช ์๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ ํ, ๊ทธ ๊ฒฐ๊ด๊ฐ์ด ํ๋๋ผ๋ true์ด๋ฉด true๋ฅผ ๋ฐํํจ. |
reduce() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๊ฐ์ผ๋ก ์ค์ด๊ธฐ ์ํด, ๋ ๊ฐ์ ์ธ์๋ฅผ ์ ๋ฌ๋ฐ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํจ. (๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์ํจ.) |
reduceRight() | ํด๋น ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๊ฐ์ผ๋ก ์ค์ด๊ธฐ ์ํด, ๋ ๊ฐ์ ์ธ์๋ฅผ ์ ๋ฌ๋ฐ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํจ. (๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ถํฐ ์์ํจ.) |
entries() | ๋ฐฐ์ด ์์๋ณ๋ก ํค์ ๊ฐ์ ํ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ก์ด ๋ฐฐ์ด ๋ฐ๋ณต์ ๊ฐ์ฒด(Array Iterator Object)๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ฐํํจ. |
keys() | ๋ฐฐ์ด ์์๋ณ๋ก ํค(key)๋ง ํฌํจํ๋ ์๋ก์ด ๋ฐฐ์ด ๋ฐ๋ณต์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ฐํํจ. |
values() | ๋ฐฐ์ด ์์๋ณ๋ก ๊ฐ(value)๋ง ํฌํจํ๋ ์๋ก์ด ๋ฐฐ์ด ๋ฐ๋ณต์ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด ํํ๋ก ๋ฐํํจ. |
find() | ๊ฒ์ฌ๋ฅผ ์ํด ์ ๋ฌ๋ฐ์ ํจ์๋ฅผ ๋ง์กฑํ๋ ๋ฐฐ์ด ์์์ ๊ฐ์ ๋ฐํํจ. ๋ง์กฑํ๋ ๊ฐ์ด ์์ผ๋ฉด undefined๋ฅผ ๋ฐํํจ. |
findIndex() | ๊ฒ์ฌ๋ฅผ ์ํด ์ ๋ฌ๋ฐ์ ํจ์๋ฅผ ๋ง์กฑํ๋ ๋ฐฐ์ด ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํจ. ๋ง์กฑํ๋ ๊ฐ์ด ์์ผ๋ฉด -1์ ๋ฐํํจ. |
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.