Data Structures: Objects and Arrays - Lee-hyuna/33-js-concepts-kr GitHub Wiki
Data Structures: Objects and Arrays
JavaScript์์ ๋๊ดํธ์ ์ค๊ดํธ๋ก ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณธ ์ ์ด ์์ต๋๊น? ์ด๋ค์ ๊ฐ๊ฐ ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ๋๋ค.
// arrays
[]
// objects
{}
JavaScript๋ก ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ ผ์ ํ ๊ฒ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด JavaScript์์ ๋ฐ์ดํฐ ์ ํ์ ์๊ณ ์์ ๊ฒ์ ๋๋ค.
- String
- Number
- Boolean
- Null
- Undefined
๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ค๋ฅด์ง ์์ง๋ง ์ข ๋ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ JavaScript์์ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ์ ์ปจํ ์ด๋๋ก ์๊ฐํ ๋ ์ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ผ๋ ์ฉ์ด์ ๋๋ค.
What is an Object?
JavaScript ๊ฐ์ฒด๋ ์๊ณ ์๋ ์์ฐ ๊ฐ์ฒด์ ์ ์ฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ปต, ์ง, ์๋์ฐจ ๋ฑ
์ด๋ค ๊ฐ์ฒด๊ฐ ํ ์ ์๋ ๊ฒ๋ค:
- ๋ช๊ฐ์ง๋ฅผ ํฌํจ
- ํน๋ณํ ํน์ง์ ์ง๋
- ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํฌํจํ ์ ์์
- ๋ช๊ฐ์ง ๋ชฉ์ ์ ์ํด ์ฌ์ฉํ ์์์
- ๊ทธ๋ค์๊ฒ ํํด์ง ๋ช ๊ฐ์ง ํ๋์ ๋ฐ์ ๋ค์ผ ์์๋ค
์๋ฅผ ๋ค์ด, ์ปต์ ์์ ์ปต์ด์์ ์ ์์ผ๋ฉฐ ์ปต์์ ๋ฌผ์ ๋ง์๊ณ ์ปต์ ๊นจ๊ณ ์๋์ฐจ๋ฅผ ์ด์ ํ๊ฑฐ๋ ์ด๋ฆฐ์ด ๋๋ ์ฅ๋๊ฐ ์๋์ฐจ๋ฅผ ์๋์ฐจ์ ๋ฃ๊ณ ๋ชฉ๋ก์ด ๊ณ์ ๋ ์ ์์ต๋๋ค.
JavaScript ๊ฐ์ฒด๋ ๋ค๋ฅด์ง ์์ผ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
const myObject = {};
์ค๊ดํธ๋ ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ฉฐ ๊ฐ์ฒด์ ์์๊ฐ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๊ฐ์ฒด ๊ฐ์ ํค : ๊ฐ ์์ผ๋ก ์ ๊ณต๋๋ฉฐ ์ด๋ฌํ ๊ฐ์ ๊ฐ์ฒด์ ์์ฑ ๋๋ ๋ฐฉ๋ฒ (ํจ์) ์ผ ์ ์์ต๋๋ค. ์์ฑ์ ๊ฐ์ฒด์ ํน์ง ๋๋ ์์ฑ ์ธ ๋ฐ๋ฉด, ๋ฐฉ๋ฒ์ ๊ฐ์ฒด์์ ์ํ ํ ์์๋ ๊ธฐ๋ฅ ๋๋ ๋์์ ๋๋ค.
์ฐธ๊ณ : ๊ฐ์ฒด๊ฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ธ์ํ๋ ค๋ฉด ๊ฐ์ฒด์์ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ ์ํด์ผํฉ๋๋ค.
๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋ฉ๋๋ค.
const myObject = {
myKey1: 'ObjectValue1',
myKey2: 'ObjectValue2',
mykeyN: 'ObjectValueN',
objectMethod: function() {
// Do something on this object
}
};
๊ธฐ๋ณธ์ ์ผ๋ก JavaScript์ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด Object์
๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ๋ง์ ์ฌ๋๋ค์ด JavaScript๋ฅผ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ ์๋์ฐ๊ฐ ๋ก๋๋๋ฉด Document
๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ๋ธ๋ผ์ฐ์ ์ ํ์๋ ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ์ฒด์ ์์์ด๋ฉฐ ๋ฌธ์ ๋ฉ์๋๋ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ์ฒด๋ฅผ ์ค์ฒฉ ํ ์๋ ์์ต๋๋ค.
const myObject = {
first: { key: 'thing', key2: 2 },
second: { key3: 'otherThing' },
third: { key4: 'my string' }
};
Everything is an Object
๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด๋ผ๊ณ ๋งํ๋ฉด JavaScript๋ ๋ชจ๋ ์ ํ์ ํด๋น ์ ํ์ ๋ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๊ฐ์ฒด๋ก ๋ํํฉ๋๋ค. ์ด๋ฅผ ๋ช ํํํ๊ธฐ ์ํด ๋ค์ ์ฝ๋๋ฅผ ์ดํด ๋ณด๊ฒ ์ต๋๋ค.
// create a message with a string value
const myMessage = 'look at me go!';
// convert to uppercase
myMessage.toUpperCase();
์ด ๋ฌธ์์ด์์ ์ด๋ป๊ฒ .toUpperCase ()
๋ฉ์๋๋ฅผ ํธ์ถ ํ ์ ์์์ต๋๊น?
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด์ ๋ํด์๋ง ๋ฉ์๋๋ฅผ ํธ์ถ ํ ์ ์์ต๋๋ค. ๋ฌธ์์ด์ ๋ง๋ค ๋ JavaScript๋ ์ค์ ๋ก ํด๋น ๋ฌธ์์ด์ string ์ ํ์ ๊ฐ์ฒด๋ก ๋ํํฉ๋๋ค. ๋ค์์ ๋์ผํฉ๋๋ค
// simple way to create a string
const myMessage = 'look at me go!';
// what javascript sees
const myOtherMessage = String('look at me go!');
myMessage == myOtherMessage; // true
์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ JavaScript ๊ฐ์ฒด์ ๋ํ ๋น๋์ค๋ฅผ ํ์ธํ์ญ์์ค. [์น ๊ฐ๋ฐ์์ํ JavaScript ์์ : ๊ฐ์ฒด] (https://scotch.io/courses/getting-started-with-javascript/objects)
Creating Objects
๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค :
Using Object Initializers
์ด๋ ํค : ๊ฐ ์๊ณผ ๋ฉ์๋๋ฅผ ์ค๊ดํธ ์์ ๋ฃ์ด์ ์์ ํ์๋๋๋ก ์ํ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ฌธ์ ํ๊ธฐ๋ฒ์ด๋ผ๊ณ ๋ํฉ๋๋ค.
const obj = {
firstName: 'William',
lastName: 'Imoh',
married: true,
greet: function() {
alert("Hello everyone, i'm " + this.firstName);
}
};
์์ ์ฝ๋์์ ๋ค์์ ํธ์ถํ์ฌ ์ด๋ฌํ ์์ฑ๊ณผ ๋ฉ์๋์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค.
obj.firstName; // William
obj.lastName; // Imoh
obj.greet(); // Will alert, Hello everyone, i'm William
์ ์ฐ๋ฆฌ๊ฐ obj.firstName
๋์ ์ ์ด๊ฒ์ this
๋ฅผ ์ฌ์ฉํ๋์ง ๊ถ๊ธ ํ ๊ฒ์
๋๋ค. ์, this
๋ ๊ทธ๊ฒ์ด ํธ์ถ๋๋ ๋ถ๋ชจ ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ ๋๋ช
์ฌ์ ๊ฐ์ ์ญํ ์ํฉ๋๋ค. ๋ค์ ๊ฐ์์์ ์ด์ ๋ํด ๋ ๋ฐฐ์ธ ๊ฒ์
๋๋ค.
Using Object Constructor
new
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
const house = new Object();
house.color = 'red';
house.houseType = 'bungalow';
house.location = 'Lagos';
์ฐ๋ฆฌ๊ฐ ํ ๊ฒ์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๋ณ์ ํ์ฐ์ค์ ํ ๋น ํ ๋ค์ ์์ฑ๊ณผ ๊ฐ๋ณ ๊ฐ์ ํธ์งํ๋ ๊ฒ์ ๋๋ค.
๋ํ ํจ์ ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๋๋ ์ฌ๋ฌ ๊ฐ์ ์ ์ฌํ ๊ฐ์ฒด๋ฅผ๋ณด๋ค ์ฝ๊ฒ โโ๋ง๋ค ์ ์์ต๋๋ค.
function University(name, location, size) {
this.name = name;
this.location = location;
this.size = size;
}
const theUniversity = new University('caritas', 'enugu', 20000);
theUniversity.name; // caritas
theUniversity.size; // 20000
์ฌ๊ธฐ์ ํจ์๋ ์ธ์๋ก ๊ตฌ์ฑ๋์์ต๋๋ค. ํจ์ ์ด๋ฆ์ ๋๋ฌธ์๋ก๋์ด ์์ผ๋ฉฐ ์์ฑ์ ํจ์์ ๋ํ ๊ท์น์
๋๋ค. ์ด ํจ์์๋ ์ธ์๊ฐ ์ ๋ฌ๋๋ฉฐ์ด ์ธ์๋ this.property
์ ์ํด ์ ์ ๋ ๊ฐ์ฒด ์์ฑ์ ๊ธฐ๋ณธ ๊ฐ์
๋๋ค.
์ ํค์๋๋ ํจ์๋ฅผ ํธ์ถํ๊ณ ํจ์์ ์ ์ ๋ ๋งค๊ฐ ๋ณ์์ ์ผ์นํ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ๋ฌํ์ฌ ์ ํค์๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๊ฒ์ ์คํํ์ญ์์ค.
console.log(theUniversity)
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ป์ต๋๋ค :
University {
name: 'caritas',
location: 'enugu',
size: '20000'
}
Accessing an Object
๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด์ ์์ฑ์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค.
Dot notation
์ ํ๊ธฐ๋ฒ์์ ๊ฐ์ฒด์ ์์ฑ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ก์ธ์ค๋ฉ๋๋ค.
const objectName = {
objectProp: 'my super duper value',
};
objectName.objectProp; // my super duper value
Square Bracket Notation
๋๊ดํธ ํ๊ธฐ๋ฒ์ ์ ํ๊ธฐ๋ฒ์ ๋์์ด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
const objectName = {
objectProp: 'super cool yo!',
};
objectName['objectProp']; // super cool yo!
์์ฑ ์ด๋ฆ์ด ๋์ ๋ ์ซ์์ ๊ฐ์ ํน์ ๋ฌธ์๋ก ์์ํ๊ฑฐ๋ ๋ณ์๋ฅผ ํค๋ก ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๋๊ดํธ ํ๊ธฐ๋ฒ ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋์ ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์์๋ ์ด๋๋ก for-loop๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ํํ๋ ๊ฒ์ ๋ง์ ๋น์ฉ์ด ๋ค์ง ์์์ผ๋ฉฐ Objects์๋ ๊ฐ์ฒด ์์ฑ์ ์ํํ๊ฑฐ๋ ๋ฐ๋ณตํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- forโฆin loop: ์ด๊ฒ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฒด์ ์ด๊ฑฐ ๊ฐ๋ฅํ ๊ฐ ์์ฑ๊ณผ ํ๋กํ ํ์ ์ฒด์ธ์ ๋ฐ๋ณตํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- Object.keys(o): object.keys (o) ๋ฉ์๋๋ ๊ฐ์ฒด o๋ฅผ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ ์ด๊ฑฐ ๊ฐ๋ฅํ ๋ชจ๋ ์์ฑ ์ด๋ฆ์ด ํฌํจ ๋ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
- Object.getOwnPropertyNames(o): ๋ ์๋ ค์ง ๋ฐฉ๋ฒ์ ๊ฐ์ฒด o๋ฅผ ๋ฐ๋ณตํ๊ณ ์ด๊ฑฐ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ๋ชจ๋ ์์ฐ ์์ฑ ์ด๋ฆ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
Arrays
๋ฐฐ์ด์ ํน๋ณํ ์ข ๋ฅ์ JavaScript ๊ฐ์ฒด์ ๋๋ค.
const a = [];
typeof a; // returns object
๋ฐฐ์ด์ ์ฌ๋ฌ ๋ณ์, ์ฆ 300 ๋ง๋ฆฌ์ ๋ญ์ ์ทจํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค! ๊ฐ์ฒด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ฌ๋ฆฌ ํค : ๊ฐ ์์ ์์ง๋ง ๋จ์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ๋ฐฐ์ด์ ์ด๋ป๊ฒ ์๋ณํฉ๋๊น? ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ ๋๋ค :
const myArray = ['hi', 'i', 'am', 'chief'];
๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ ๋๊ดํธ๋ก ๋ฌถ๊ณ ์ํ๋๋งํผ์ ๋ณ์์ ๋ค๋ฅธ ๋ฐฐ์ด์ ํฌํจ ํ ์ ์์ต๋๋ค. ๋ฐฐ์ด์ ๊ฐ์ฒด์ด๋ฉฐ ๊ฐ์ฒด๋ ํฌํจ ํ ์ ์์ต๋๋ค.
const myArray = [
{ name: 'chris', location: 'racoon city' }
];
Creating Arrays
๋ฐฐ์ด์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์์ฑ๋ฉ๋๋ค.
Array Literal
๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐฐ์ด์ ๋ง๋๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐฐ์ด ๊ฐ์ ๋๊ดํธ๋ก ๋ฌถ์ต๋๋ค.
const arr = [];
const bar = ['drinks', 'music', 'dance', 'beer', 'more beer'];
// an array of objects
const coocoo = [
{ key: 'thing', key2: 2 },
{ key3: 'otherThing' },
{ key4: 'my string' }
];
Array Constructor
์ด๊ฒ์ ์๋ก์ด ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ง๋๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ค. ์คํฌ๋ฆฝํธ์์ ์๊ธฐ์น ์์ ๋์์ ์ผ์ผํฌ ์ ์์ผ๋ฏ๋ก ๋ง์ ์ฌ๋๋ค์ด ๋์ ์ต๊ด์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค. ๋ฐฐ์ด ๊ฐ์ ์์ฑ์์ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค.
const bar = new Array('beer', 'music', 'beer', 'more beer');
console.log(bar); // ['beer', 'music', 'beer', 'more beer']
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ :
const fig = new Array(10, 20);
console.log(fig); // [10, 20]
๊ทธ๋ฆผ์ด ์ ๊ฑฐ๋๋ฉด ์ด๋ป๊ฒ ๋๋์? ์ฐ๋ฆฌ๋ :
const fig = new Array(10);
console.log(fig); // returns 10 empty arrays!
์ฐ๋ฆฌ๋ 10 ๊ฐ์ ๋น ๋ฐฐ์ด์ ์ป์ต๋๋ค! ๋ฐฐ์ด ๋ฆฌํฐ๋ด []์ ์ฌ์ฉํ๋ฉด ์ฝ๊ธฐ๊ฐ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ์ ์ผ๋ฉฐ ์์๋๋ก ์๋ํ๋ฏ๋ก ํญ์ ๊ถ์ฅ๋ฉ๋๋ค.
Accessing Arrays
๊ฐ์ฒด์ ๋ฌ๋ฆฌ ๋ฐฐ์ด ๊ฐ์ 0๋ถํฐ ์์ํ๋ ์์ธ โโ์์น๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์คํฉ๋๋ค (๋ฐฐ์ด์ 0์ผ๋ก ์์ธํ ๋จ). ๊ฐ์ฒด๋ ๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ฉด ๋ฐฐ์ด์ ์ซ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ์ก์ธ์ค๋ฉ๋๋ค :
const myArr = [10, 40, 50, 70, 20, 2, 100];
myArr[0] // 10
myArr[3] // 70
myArr[7] // 100
arr.firstNumber
์ ๊ฐ์ ๋ฐฐ์ด์์ ๋ฌธ์ ์์ธ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ฐ์ํฉ๋๋ค.
Array Methods
๊ฐ์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐฐ์ด์๋ ์กฐ์์ ์ฌ์ฉํ ์์๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋ฉ์๋๋ ๋ด์ฅ๋๊ฑฐ๋ ๊ตฌ์ฑ ๋ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๋ฐฐ์ด ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ ์ฌ๊ธฐ ์์ ์ฐพ์ ์ ์์ต๋๋ค.
const fig = [2, 5, 10, 30, 20];
arr.length; // returns the length of the array = 5
for ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๊ฒ์ ๋งค์ฐ ์ํํฉ๋๋ค. ์์ ์๋ฅผ ์ฌ์ฉํ๋ฉด
const fig = [2, 5, 10, 30, 20];
for (let i = 0; i < fig.length; i++) {
console.log(fig[i]);
}
// 2
// 5
// 10
// 30
// 20
๋ค๋ฅธ ๋ฐฐ์ด ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pop()
: ๋ฐฐ์ด์์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ํด๋น ์์๋ฅผ ๋ฐํslice()
: ๋ฐฐ์ด ๋ถ๋ถ์ ์์ ๋ณต์ฌ๋ณธ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํshift()
: ๋ฐฐ์ด์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ํด๋น ์์๋ฅผ ๋ฐํunshift()
: ๋ฐฐ์ด์ ์์ ๋ถ๋ถ์ ํ๋ ์ด์์ ์์๋ฅผ ์ถ๊ฐํ๊ณ ๋ฐฐ์ด์ ์ ๊ธธ์ด๋ฅผ ๋ฐํ
๋ฐฐ์ด ์์ ์ ํ ๋๋ ํญ์ ๋ด์ฅ ๋ฉ์๋๋ฅผ ์ดํด๋ณด์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ํ์ํ ๊ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ฐฐ์ด ๋ฉ์๋๋ ** mutator ๋ฉ์๋ **, ** accessor ๋ฉ์๋ ** ๋ฐ ** iteration ๋ฉ์๋ **๋ก ๊ทธ๋ฃนํ ํ ์ ์์ต๋๋ค. ๋ฎค ํ
์ดํฐ ๋ฉ์๋๋ ์ค์ ๋ก ๋ฐฐ์ด์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์์ ํ๋ ๋ฉ์๋์
๋๋ค. ์๋ฅผ ๋ค์ด array.push ()
๋ฉ์๋๋ ์ง์ ๋ ์์๋ฅผ ๋ฐฐ์ด์ ์ถ๊ฐํ๊ณ ์์ ๋ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
const fig = [10, 20, 30, 40];
fig.push(80);
console.log(fig); // [10, 20, 30, 40, 80]
์ ๊ทผ ์ ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ฉ์๋์ ํจ๊ณผ์ ๋ฐ๋ผ ๋ฐฐ์ด์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ฉ์๋์
๋๋ค ์ : array.slice ()
const fig = [10, 20, 30, 40];
const b = fig.slice(1);
console.log(b); // [20, 30, 40]
console.log(fig); // [10, 20, 30, 40]
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ๋ฐ๋ณต ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ํ๋งํ๊ณ ๋ฉ์๋์ ์ ์ ๋ ์ฝ๋ฐฑ ํจ์๋ก ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ํ๊ฐํ๋ ๋์ ๋ฐฐ์ด์ ๋ฐ๋ณตํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ .forEach ()
๋ฐ.map ()
๋ฉ์๋๊ฐ ํฌํจ๋ฉ๋๋ค.
const fig = [10, 20, 30, 40];
const newFig = fig.map(function(val) { //calls a function on each element of the array
return val + 10;
});
console.log(newFig) // [20,30,40,50]
๋ง์ง๋ง์ผ๋ก ๋ฐฐ์ด์๋ ๊ธธ์ด๋ฅผ ํฌํจํ๋ ์์ฑ์ด ์์ผ๋ฉฐ ๋ฐฐ์ด์๋ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด ์ง ์ ์์ต๋๋ค.
Conclusion
์ฐ๋ฆฌ๋ ๊ฐ์ฒด๊ฐ ๋ฌด์์ธ์ง, ์ด๋ป๊ฒ ๋ง๋ค ์ ์๋์ง, ์์ฑ๊ณผ ๊ฐ์ ์ฒ๋ฆฌํ์ฌ ํน์ํ๊ฒ ๋ง๋๋ ์ด์ ๋ฅผ ๋ช ํํ๊ฒ ์ดํดํฉ๋๋ค. ๊ฐ์ฒด์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํคํ ์ฒ์์ ์๋ฒ ์๋ต์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค.
๋ฐ๋ฉด์ ๋ฐฐ์ด์ ์ปจํ ์ด๋์ ๊ฐ์ ๋ฐ์ดํฐ ๋ชจ์์ ๋๋ค. ๊ทธ๊ฒ์ ์ฌ์ฉ ๋ํ ๊ด๋ํ๋ค. ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด ๋ชจ๋์ ์ฌ์ฉํ ์์๋ ์๋ง์ ๋ฐฉ๋ฒ์ผ๋ก ์์ ๋กญ๊ฒ ๋์๋ณด์ญ์์ค. ํญ์ ์์ ๋ฟ๋๋ค๋ ๊ฒ์ ํญ์ ๊ธฐ์ตํ์ญ์์ค. ์ฌ๋ฌ ๋ฒ ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ง๋ค ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ๊ฐ์ฒด ๋ชฉ๋ก์ด์์ ์ ์์ต๋๋ค.