ํ ๋ผ โ ๊ท ๋๊ฐ, ๋๋ฌผ์ด๋ผ๋ property์ ๋ด๋ค, ๋จน๋๋ค์ ๊ฐ์ method๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
๋น๊ทผ โ ์ฑ์, ์ฃผํฉ์, ๋นํ๋ฏผC๋ผ๋ property๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
์ด๋ ๊ฒ ๋น์ทํ ํน์ง๋ผ๋ฆฌ ๋ฌถ์ด๋์ ๊ฒ์ object๋ผ๊ณ ํ๋ค.
(object๋ ๋น๊ทผ์ฒ๋ผ property๋ง ์๊ณ , method๋ ์์ ์๋ ์๋ค.)
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ object๋ค์ ํ ๋ฐ๊ตฌ๋์ ์ ์ ๋ฆฌํ๋๊ฒ์ array๋ผ๊ณ ํ๋ค!
๐คท๐ปโโ๏ธ ๊ตณ์ด ๋ฐ๊ตฌ๋์ ์ ๋ฆฌํด์ผํ๋ ์ด์ ?
ํจ์จ์ ์ธ ์ ๊ทผ ๋ฐ ์์ ์ ๊ฐ๋ฅ์ผ ํ๋ ์๋ฃ์ ์กฐ์ง, ๊ด๋ฆฌ, ์ ์ฅ์ ์ํด์์ด๋ฉฐ, ์ด๋ฅผ ์๋ฃ๊ตฌ์กฐ ๋ผ๊ณ ํ๋ค.
์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ์๋ Array, Linked List, Queue, Priority Queue, Stack, Hash Table, Heap, Tree, Graph๊ฐ ์์ผ๋ฉฐ, ์๋ฃ๊ตฌ์กฐ๋ JS ๊ธฐ๋ณธ ์ด๋ก ๋๋ธ ํ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํจ๊ป ๋ ๊ณต๋ถํ ์์ !
์ด ๋ฐ๊ตฌ๋๋ฅผ ์ข ๋ ์์ธํ ์ดํด๋ณด๋ฉด, ์ด๋ ๊ฒ index ์์น๊ฐ ์ง์ ๋์ด์ ธ ์๋ ํ ํ ๋น array box์์ object๋ค์ด ํ๋์ฉ ๋ค์ด๊ฐ์๋ ๋ชจ์!
์ฌ๊ธฐ์ ํ ๋ผ, ๋น๊ทผ ๊ฐ์ด Array ์์ ๋ค์ด์๋ ๋ฐฐ์ด์ ๊ฐ ํ๋ํ๋๋ฅผ Element(์์)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์์ ์์ ์ฌ์ด๋ ์ผํ๋ก ๊ตฌ๋ถํ๋ค.
์ ํ ๋ผ, ๋น๊ทผ ์์์์๋ Array์์ object๋ง ๋ค์ด ์์ง๋ง, ๋ชจ๋ Type์ ๋ฐ์ดํฐ๊ฐ Array์์ ๋ด๊ธธ ์ ์๋ค!
String, Number, Object, ์ฌ์ง์ด Array๋ ๊ฐ๋ฅ!!!
index๋ฅผ ์ด์ฉํด array์ ์ object๋ค์ ๋ฐ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ์ด๋ ๊ฒ ์ญ์ , ์์ ์ด ์ฉ์ดํ๋ค!
๋๋ถ์ด, javascript๋ type์ด ๋ค์ด๋๋ฏนํ๊ฒ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์, javascript์์์ array๋ ์ด๋ ๊ฒ ์ ํ ๋ค๋ฅธ type๋ค์ ๋ง๊ตฌ์ก์ด๋ก ๋ด์๋ ์๋ ์์ง๋ง, ์ด๋ ๊ฒ ์ฝ๋ฉํ๋๊ฑด NO!!!
const arr1 = new Array(); // ๋น ๋ฐฐ์ด ์์ฑ
arr1[0] = 1;
arr1[0] = 2;
const arr2 = new Array(1, 2);
const arr3 = [1, 2];
๋ฐฐ์ด์ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ์ ์์์ฒ๋ผ 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
1๋ฒ์ฒ๋ผ ๋จผ์ ๋น ๋ฐฐ์ด์ ์ ์ธํ ํ์, ๋น ๋ฐฐ์ด์ ์ํ๋ index ์์น์ ๋ด์ฉ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ด ์๋๋ฐ, ๋์ ๊ฒฝ์ฐ, ์ฌ์ ์คํฐ๋ ๊ณผ์ ๋ก ํ๋ ์ซ์ ์ผ๊ตฌ ๊ฒ์์ ๋ง๋ค ๋ const array = [];
๋ก ๋น๋ฐฐ์ด์ ๋ง๋ค์๋ค.
2๋ฒ, 3๋ฒ์ฒ๋ผ Array ์ ์ธ๊ณผ ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์๋ ์๋ค.
โ ์ฐธ๊ณ ๋ก ์ ์์๋ ๋ชจ๋ ํ์ฌ ์ด๋ฐ ์ํ!
์ถ๊ฐ๋ก, ๋น ๋ฐฐ์ด์ ์์๋ฅผ ๋ด์๋๋
cities[0] = "์์ธ";
cities[1] = "๋์ ";
์ผ๋ก ํ๋์ฉ ์ถ๊ฐํ ์ ์๋ค.
(์ฌ์ ์คํฐ๋ ์์ ํ ๋๋ ํจ์๋ฅผ ๋๋ ค์ ๋์จ ๊ฒฐ๊ณผ๊ฐ์ ๋น ๋ฐฐ์ด์ ๋ฐ๋ก ๋ฃ์๋๋ฐ , ์ด๋ฐ์์ผ๋ก ๋ฐฐ์ด์ ์์ ๋ฃ๋ ๋ฐฉ๋ฒ๋ ๋ฌผ๋ก ๋ค์ํ๋ค!)
ํน์ดํ๊ฑด,cities[5] = "์ ์ฃผ๋";
์ด๋ ๊ฒ 6๋ฒ์งธ ์์์ ๋ฏธ๋ฆฌ ๊ฐ์ ํ ๋นํ ์ ์๋ค.
์ ์ง ์ฐจ๋ก๋๋ก ์์๋ฅผ ํ ๋นํด์ผ ํ ๊ฒ ๊ฐ์ง๋ง...์ํ๋ ์์น์ ๋ฌด์์๋ก ํ ๋นํด๋ ๋จ!
(๋จ, 2,4,5๋ฒ์งธ ์์๋ ์ง์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.)let cities = []; cities[0] = "์์ธ"; cities[1] = "๋์ "; cities[5] = "์ ์ฃผ๋"; console.log(cities); // [ '์์ธ', '๋์ ', <3 empty items>, '์ ์ฃผ๋' ] console.log(cities[4]); // undefined
const fruits = ['๐', '๐', '๐'];
console.log(fruits); // ๐, ๐, ๐
console.log(fruits[0]); // ๐
console.log(fruits[1]); // ๐
console.log(fruits[3]); // undefined
console.log(solmi['name'])
์ ['name']
key๋ก ์ํ๋ ๊ฐ์ ํธ์ถํ ์ ์๋ฏ์ด, array ์์๋ index์ ์์น๋ก ์ํ๋ ๊ฐ์ ํธ์ถํ ์ ์๋ค.
array์ ์ฒซ๋ฒ์งธ ๊ฐ์ ์ฐพ์ ๋
(fruits[0])
๋ฅผ ์ฌ์ฉํ๊ณ , ๋ง์ง๋ง ๊ฐ์ ์ฐพ์ ๋(fruits[fruits.length - 1])
์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
const fruits = ['๐', '๐', '๐'];
fruits array ์์ ์๋ ๋ชจ๋ ๊ณผ์ผ ๋ค์ ๋ฐ๋ณตํด์ ์ถ๋ ฅํ๊ณ ์ถ๋ค๋ฉด!?
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
์ด๋ ๊ฒ for
๋ฌธ์ ์ด์ฉํด์ ์ถ๋ ฅํ ์ ์๋ค.
for (let value of fruits) {
console.log(value);
}
for of
๋ฅผ ์ด์ฉํ๋ฉด for
๋ณด๋ค ๋ ๊ฐ๋ตํ๊ฒ ์ฝ๋ฉํ ์ ์๋ค.
for of
๋ ์ํ ํ ๊ฐ์ฒด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์, ๋ฐ๋ก fruits.length
๋ฑ์ผ๋ก ๋ฐ๋ณต ํ์๋ฅผ ์ง์ ํ ํ์๊ฐ ์๋ค.
fruits.forEach((fruits) => console.log(fruits));
for of
๋ณด๋ค ๋๋๋๋ ๊ฐ๋ตํ๊ฒ๋!?
๋ฐ๋ก forEach
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค! forEach๋ callback ํจ์๋ฅผ ํตํด ๊ธฐ๋ฅ์ ์ํํ ์ ์์ผ๋ฉฐ, arrow ํจ์๋ ์ฌ์ฉ ๊ฐ๋ฅํด์ ํ ์ค๋ก ๊ฐ๋จํ๊ฒ ํํํ ์ ์๋ค.
array์ ๋์์ ๋ถํฐ item์ ์ถ๊ฐ!
const fruits = ['๐', '๐', '๐'];
fruits.push('๐', '๐');
console.log(fruits); // '๐', '๐', '๐', '๐', '๐'
array์ ๋์์ ๋ถํฐ item์ ์ญ์ !
fruits.pop();
console.log(fruits); // '๐', '๐', '๐', '๐'
fruits.pop();
console.log(fruits); // '๐', '๐', '๐'
array์ ์์์ ๋ถํฐ item์ ์ถ๊ฐ!
fruits.unshift('๐');
console.log(fruits); // '๐', '๐', '๐', '๐'
array์ ์์์ ๋ถํฐ item์ ์ญ์ !
fruits.shift();
console.log(fruits); // '๐', '๐', '๐'
fruits.shift();
console.log(fruits); // '๐', '๐'
๐๐ปโโ๏ธ ๊ทธ๋ฆผ์ผ๋ก ๋ณด๋ฉด ์ด๋ฐ ๋๋!!
๐ฉ๐ปโ๐ซ pop์ด๋ shift๋ก ์ญ์ ๋ item๋ค์ ์ฌ์ค ์์ ํ ์ง์์ง๋๊ฒ ์๋๋ผ ๊ทธ ๊ฐ์ด ๋ฐ๋ก ๋น ์ง๋ ๊ฒ!
const fruits = ['๐', '๐', '๐']; const poped = fruits.pop(); console.log(poped); // ๐
โ ์ด๋ ๊ฒ pop์ผ๋ก ์ญ์ ํ item๋ค์ ๋ฐ๋ก ๋ด์ ์ ์๋ค!
โ ๏ธ shift์ unshift๋ pop์ push์ ๋นํด ๋งค์ฐ๋งค์ฐ ๋๋ฆฌ๋ค!!!!
โ pop๊ณผ push๋ ์ ์ผ ๋ค์ item์ ๋ฃ๊ณ ๋นผ๊ณ ์์ ๋กญ๊ฒ ํ ์ ์์ง๋ง, shift์ unshift๋ ์๋ ์์ ์๋ item๋ค์ ๋ค๋ก ๋ฐ๊ฑฐ๋ ์์ผ๋ก ๋น๊ฒจ์ผ ํ๊ธฐ ๋๋ฌธ์ array๊ฐ ๊ธธ์ด์ง์๋ก ์ฒ๋ฆฌ์๋๊ฐ ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋์ ๊ผญ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋๋๋ก pop, push๋ฅผ ์ฌ์ฉํ ๊ฒ!
index position์ ์ด์ฉํด ์ํ๋ ์์น์ item์ ์ญ์ , ์ถ๊ฐํ ์ ์๋ค.
const fruits = ['๐', '๐', '๐', '๐'];
fruits.splice(1); // ๐
fruits.splice(1, 1); // ๐, ๐, ๐
fruits.splice(1, 2, '๐', '๐'); // ๐, ๐, ๐, ๐
splice(1)
: 1๋ฒ์งธ index๋ถํฐ item์ ๋ชจ๋ ์ญ์
splice(1, 1)
: 1๋ฒ์งธ index๋ถํฐ item์ 1๊ฐ ์ญ์
splice(1, 2, '๐', '๐')
: 1๋ฒ์งธ index๋ถํฐ item์ 2๊ฐ ์ญ์ ํ๊ณ , item์ ์ญ์ ํ ์๋ฆฌ์ ๐,๐์ถ๊ฐ
๐๐ปโโ๏ธ splice๋ item์ ์ญ์ ํ์ง ์๊ณ ์ถ๊ฐ๋ง ํ ์๋ ์๋ค.
splice(1, 0, '๐', '๐')
์ด๋ฐ ์์ผ๋ก!
์ธ์๋ก ์ฃผ์ด์ง ๋ฐฐ์ด์ด๋ ๊ฐ๋ค์ ๊ธฐ์กด ๋ฐฐ์ด์ ํฉ์ณ์ ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๋ฐํํ๋ค.
const fruits2 = ['๐ฅ', '๐'];
const newFruits = fruits.concat(fruits2);
console.log(newFruits); // ๐, ๐, ๐, ๐, ๐ฅ, ๐
const fruits = ['๐', '๐', '๐'}];
console.log(fruits.indexOf('๐')); // 1
console.log(fruits.indexOf('๐')); // 2
console.log(fruits.indexOf('๐ฅฆ')); // -1
indexOf
๋ array์์์ ํน์ item์ index position์ ์ถ๋ ฅํด์ค๋ค.
๋ง์ฝ ์ ์์์ฒ๋ผ, array์ ์๋ ๊ฐ์ ํธ์ถํ๋ฉด -1์ด ์ถ๋ ฅ๋๋ค.
์ด ์ ์ ์ด์ฉํด์ ์ซ์ ์ผ๊ตฌ ๊ฒ์์์
indexOf
๋ก ๋์จ ๊ฐ์ด -1 ์ด์์ด๋ฉด~์ด์ฉ๊ตฌ~ ๋ก ์ฝ๋๋ฅผ ์งฐ์๋๋ฐ, ๋ ๊ณต๋ถํด๋ณด๋ ์์ ์ฐพ๋ item์ด array์์ ์์ผ๋ฉด true, ์์ผ๋ฉด false๋ฅผ ๋ฐํํด์ฃผ๋ api๊ฐ ์์๋น...
const fruits = ['๐', '๐', '๐'}];
console.log(fruits.includes('๐')); // true
console.log(fruits.includes('๐ฅฆ')); // false
์ด๋ ๊ฒ includes
๋ผ๋ api๋ฅผ ์ด์ฉํ๋ฉด true, false ๊ฐ์ผ๋ก item์ด array์์ ํฌํจ๋์ด ์กด์ฌํ๋์ง ํ์ธํ ์ ์๋ค.
indexOf
๋ array์์ ์์ฐจ์ ์ผ๋ก ๋๋ค๊ฐ, ์ผ์นํ๋ item์ ๋ง๋๋ฉด ๊ทธ ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๊ณ ๋๋๋ฒ๋ฆฐ๋ค.
const fruits = ['๐', '๐', '๐', '๐'];
console.log(fruits.indexOf('๐')); // 0
์ฆ, ์ด๋ ๊ฒ array์์ ๐๊ฐ 2๊ฐ ์์ง๋ง, indexOf
๋ ๐์ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์์น์ธ 0
์ ๋ฐํํ๋ค.
์ด์ ๋ฐ๋๋ก, lastIndexOf
๋ฅผ ์ฌ์ฉํ๋ฉด
const fruits = ['๐', '๐', '๐', '๐'];
console.log(fruits.lastIndexOf('๐')); // 3
๐์ ๊ฐ์ฅ ๋ง์ง๋ง ์์น์ธ 3
์ ๋ฐํํ๋ค.