์๋ฐ์คํฌ๋ฆฝํธ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํ๋ฉด์ ๋๋ ์
๋ฐฐ์ด์ ์ ๋๋ก ์์์ผ๊ฒ ๋ค.
๊ทธ๋์ ์ ๋ฆฌํด๋ณธ๋ค.
๋ค๋ฒผ๋ผ ๋ฐฐ์ด <?
0. ๋ฐฐ์ด์ ๊ณต๋ถํ๊ธฐ ์ ์ ์์๋ณด๋ฉด ์ข์ ๊ฐ๋ ๋ค
โถ๏ธ์๋ฃ๊ตฌ์กฐ(Data Structure) : ๋น์ทํ ํ์ ์ ๋ฐ์ดํฐ, ์ค๋ธ์ ํธ ๋ค์ ๋ฌถ์ด ๋์ ๊ฒ (ํ ๋ผ๋ง ๋ฃ์ ๋ฐ๊ตฌ๋, ๋น๊ทผ๋ง ๋ฃ์ ๋ฐ๊ตฌ๋)
์๋ฃ๊ตฌ์กฐ๋ ๋์ผํ ํ์ ์ ๋ฐ์ดํฐ๋ง ๋ด์ ์ ์๋ค.
but , ์๋ฐ์คํฌ๋ฆฝํธ๋ dynamically typed language ํ์ ์ด ๋์ ์ผ๋ก ์ ์๋๋ ์ธ์ด!
ํ ๋ฐ๊ตฌ๋ ์์ ๋ค์ํ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ค์ ๋ด์ ์ ์์ โก๏ธ ์ ๋ ๊ถ์ฅํ์ง ์์
โถ๏ธ์ค๋ธ์ ํธ(Object) : ์๋ก ์ฐ๊ด๋ ํน์ง๊ณผ ํ๋๋ค์ ๋ฌถ์ด ๋์ ๊ฒ (ํ ๋ผ, ๋น๊ทผ, ์ฌ๋, ์๋์ฐจ)
โถ๏ธํ๋กํผํฐ(Property) : ์ค๋ธ์ ํธ ๋ด๋ถ์ ์์ฑ (๊ท ๋ ๊ฐ, ๋๋ฌผ, ๋นํ๋ฏผC, ์ฃผํฉ์)
โถ๏ธ๋ฉ์๋(Method) : ์ค๋ธ์ ํธ์ ์ ์ฅ๋ ํจ์๊ฐ (๋จน๋๋ค, ๋ด๋ค)
โถ๏ธ๋ฐฐ์ด ๋ด ๋์ผํ ๋ฐ์ดํฐํ์ (string,number ..)์ ๋ด๊ธฐ
โถ๏ธ๋ฐฐ์ด์ ํฌ์ธํธ๋ ์ธ๋ฑ์ค! ์ธ๋ฑ์ค๋ก ์ ๊ทผํ์ฌ ์ญ์ , ์ถ๊ฐ
1. ๋ฐฐ์ด์ ์ธ
'use strict';
// Array๐
// 1. Declaration
const arr1 = new Array();
const arr2 = [1, 2];
const arr3 = [];
๋ณ์๋ฅผ ์ง์ ํ๊ณ new Array() ๋๋ []๋ฅผ ์ด์ฉํด์ ๋ฐฐ์ด์ ์ ์ธํ ์ ์๋ค.
2. ์ธ๋ฑ์ค๋ฅผ ํตํ ๋ฐฐ์ด์ ๊ทผ
// 2. Index position
// index๋ฅผ ํ์ฉํด์ ๋ฐ์ดํฐ ๊ฒ์ํ๊ณ ์ฝ์
ํ๋ ๋ฐฉ๋ฒ
const fruits = ['๐', '๐'];
console.log(fruits); // ['๐', '๐']
console.log(fruits.length); // 2
console.log(fruits[0]); // ๐
console.log(fruits[1]); // ๐
console.log(fruits[2]); //undefined
console.log(fruits[fruits.length - 1]); // ์ ์ผ ๋ง์ง๋ง Index
์ปดํจํฐ์ ์ธ๋ฑ์ค๋ ์์ ๊ทธ๋ฆผ์์ ๋ณธ๊ฑฐ์ฒ๋ผ 0๋ถํฐ ์์ํ๋ค.
๋ฐ๋ผ์ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์ ๊ทผํ๊ธฐ ์ํด์ ์ ์ฒด ๋ฐฐ์ด์ ๊ธธ์ด์์ 1์ ๋นผ์ผ ํ๋ค.
3. ๋ฐฐ์ด์์ ์๋ ๊ฐ ์ถ๋ ฅ
//3. Looping over an Array
//print all fruits
const fruits = ['๐', '๐'];
// a.for
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
// ๐
// ๐
// b. for...of
for(let fruit of fruits) {
console.log(fruit);
}
// ๐
// ๐
// c. forEach
fruits.forEach((fruit, index) => console.log(fruit, index)); // array function
// ๐, 0
// ๐, 1
๋ฐฐ์ด์์ ์๋ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด์ for๋ฌธ์ ๋๋ฆฌ๋ ๊ฒ๊ณผ forEach ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
4. ๋ฐฐ์ด ์ถ๊ฐ, ์ญ์ , ๋ณต์ฌ
//4.Addition, deletion, copy (์ถ๊ฐ, ์ญ์ , ๋ณต์ฌ)
const fruits = ['๐', '๐'];
//push : add an item to the end (๋งจ ๋์ ์์ดํ
์ ์ถ๊ฐ)
fruits.push('๐','๐');
console.log(fruits); //['๐', '๐','๐','๐']
//pop : remove an item from the end (๋งจ ๋์ ์์ดํ
์ ์ญ์ )
fruits.pop(); // ๐ bye ๐
fruits.pop(); // ๐ bye ๐
console.log(fruits); // ['๐', '๐']
//unshift : add an item to the bengging (๋งจ ์์ ์์ดํ
์ ์ถ๊ฐ)
fruits.unshift('๐ฅ','๐');
console.log(fruits); // ['๐ฅ','๐','๐', '๐']
// shift : remove an item from the bengging (๋งจ ์์ ์์ดํ
์ ์ญ์ )
fruits.shift(); // ๐ฅ bye ๐
fruits.shift(); // ๐ bye ๐
console.log(fruits); // ['๐', '๐']
//note!! shift, unshift are slower than pop, push
// ์ค์ โจ shift, unshift๋ pop, push๋ณด๋ค ๋๋ฆฌ๋ค!
// combine two arrays ๋๊ฐ์ ๋ฐฐ์ด์ ํฉ์นจ
const fruits2 = ['๐','๐
'];
const newFruits = fruits.concat(fruits2);
console.log(newFruits); // ['๐', '๐','๐','๐
']
push์ pop์ ๋ค์์ ๋ฐฐ์ด์ ์ญ์ ํ๊ณ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์์ ์๋ ๋ฐ์ดํฐ๋ค์ ์ด๋์ด ์๋ค.
์๋ฅผ ๋ค์ด์ ๋ฐ์์ ์ค์ ์ ๋ ฌํ๋ค๊ณ ํ์ ๋ ๋ท์ค์ ์์๋ ์๋ค์ด ๋น ์ง๊ณ ๋ค์ ๋ค์ด์ค๋ ๊ฑด ๋ณ๋ก ์ฐจ์ด๋ฅผ ๋ชป ๋๋ผ์ง๋ง
๋งจ ์์ ์๋ ์ฌ๋์ด ๋น ์ง๊ฑฐ๋ ์๋กญ๊ฒ ๋ค์ด์ฌ ๋๋ฉด ํ ์นธ์ฉ ๋ฐ๋ฆฌ๋ฉด์ ์ค์ ์ ๋ ฌํ๊ธฐ ์ํ ์๊ฐ์ด ๊ธธ์ด์ง๋ค.
์ ๊ฐ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค!
๊ทธ๋์ shift์ unshift๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋ ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ ์ญ์ ๊ฐ ํ์ํ๋ค๋ฉด push๋ pop์ ์ด์ฉํ๋ ๊ฒ์ด ์ข๋ค.
5. ๋ฐฐ์ด ๊ฒ์
//5.Searching
const fruits = ['๐', '๐'];
fruits.push('๐');
//indexOf : find the index (๋ฐฐ์ด์ ์๋ ์์์ค ์ผ์นํ๋ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ)
console.log(fruits); // ['๐', '๐', '๐']
console.log(fruits.indexOf('๐')); //0
console.log(fruits.indexOf('๐')); //2
console.log(fruits.indexOf('๐ง')); //-1 ๋ฐฐ์ด์ ์์๊ฐ ์์ผ๋ฉด -1์ ๋ฐํ
//includes ๋ฐฐ์ด์ ์์๋ฅผ ํฌํจ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ํ๋
console.log(fruits.includes('๐')); //true
console.log(fruits.includes('๐ง')); //false
//lastIndexOf (๋ฐฐ์ด์ ์๋ ์์์ค ์ผ์นํ๋ ๊ฐ์ฅ ๋ง์ง๋ง ์์์ ์ธ๋ฑ์ค๋ฅผ ๋ฐํ)
fruits.push('๐');
console.log(fruits); // ['๐', '๐', '๐','๐']
console.log(fruits.indexOf('๐')); //0
console.log(fruits.lastIndexOf('๐')); //4
Reference
์ด ํฌ์คํ ์ ๋๋ฆผ์ฝ๋ฉ ์ ํ๋ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด ๊ฐ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
๋ฐฐ์ด์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ ์ ์์๋ดค์ผ๋ ๋ฐฐ์ด์ ์ด์ฉํ๋ ๋ฉ์๋ค๋ ๋ค์ผ๋ก ์์๋ณด๋ ๊ฒ๋ ์ข๋ค.
๋ ์์ธํ๊ฒ ์๊ณ ์ถ๋ค๋ฉด ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํ์๊ธธ.