๋ฐฐ์ด = array
๊ฐ์ฒด = obj
.
๐ str[0]
๋ฌธ์์ด์ 0๋ฒ์งธ index ์ถ๋ ฅ
'this' ๋ผ๋ string(๋ฌธ์์ด)์ด ์์ ๋,
str[1] ์ ๋ ฅํ๋ฉด,
this์ ์ฒซ๋ฒ์งธ index์ธ t ์ถ๋ ฅ.
.
๐ array[1]
๋ฐฐ์ด์ 1๋ฒ์งธ index ์ถ๋ ฅ
.
๐ array.slice(start,end) โ end-1๊น์ง
[1, 2, 3, 4, 5, 6, 7] ์ด๋ผ๋ ๋ฐฐ์ด์ด ์์ ๋,
array.slice(0,3) ์ ๋ ฅํ๋ฉด // index 0 ๋ถํฐ index 2๊น์ง ์ถ๋ ฅ
[1, 2, 3] ์ถ๋ ฅ๋๋ค.
array.slice(2,6) ์ ๋ ฅํ๋ฉด // index 2๋ถํฐ index 5๊น์ง ์ถ๋ ฅ
[3, 4, 5, 6]
.
๐ function allKeys (obj) {
for (let insu in obj) { // [key:value]๋ฅผ ๊ฐ์ง obj ์์ ๋ชจ๋ key๋ฅผ insu๋ผ๋ ๋ณ์๋ช ์ผ๋ก ์ง์ . ๋ณ์๋ช ์ ๋ฐ๋ณต์ํฌ๊ฑฐ์ผ. ๋ผ๋ ๋ป.
์ฆ, [key:value] ์ ์ฒด๊ฐ obj ์ธ ๊ฒ.
key๋ฅผ insu ๋ผ๋ ๋ณ์๋ช ์ผ๋ก ์ง์ ํ ๊ฒ.
๊ทธ๋ ๋ค๋ฉด, obj์ value๊ฐ์ ๊ฐ์ ธ์ค๋ ค๋ฉด ? โ obj[insu]
insu๋ ๋ณ์๋ช ์ด๊ธฐ ๋๋ฌธ์ obj['insu']๋ผ ์ฐ์ง ์๋๋ค.
obj['insu']๋ผ๊ณ ์ธ ๊ฒฝ์ฐ๋ insu๋ผ๋ ๋ณ์๋ช ์ ๊ฐ์ด name ์ผ ๊ฒฝ์ฐ๋ค
obj['name'] ํน์ obj.name ๋ผ๊ณ ์ ๋ ฅํ์ ๋, value๊ฐ์ ํธ์ถํ๋ค.
.
์์ธ์ค๋ช :
key : value ํ์์ผ๋ก,
name : 'Anna' ๊ฐ ์๋ค. โ ์ด ์ ์ฒด ๋ถ๋ถ์ property๋ผ๋ ๋ณ์๋ผ ์นญํ์.
์ฌ๊ธฐ์, property์ value๊ฐ์ธ 'Anna'๋ฅผ ์ถ๋ ฅํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ :
property.name
OR
property['name']
Butโ๏ธ ๋ณ์๋ฅผ ์ธ ๋๋ bracket notation [ ] ์ฌ์ฉ โ๏ธ
โ ์์ insu ๋ณ์๋ช
์ผ์๋ obj[insu]๋ผ๊ณ ๋ง ์จ์ฃผ๋ ์ด์ .
.
< Another example >
let obj = {
key : [ 'Tim' , 'Kim' ]
};
์ฌ๊ธฐ์, obj[key]
์
๋ ฅํ๋ฉด, value๊ฐ์ธ ['Tim' , 'Kim']
์ด ์ถ๋ ฅ๋๋ค.
.
element : ๊ฐ
index : ์์ (๋ฒ์งธ) 0๋ถํฐ ์์
๐ .unshift() ๋งจ ์ element ์ถ๊ฐ - ๊ธธ์ด ๋ฐํ
๐ .shift() ๋งจ ์ element ์ญ์ - ๊ฐ์ ๊ฐ์ง๊ณ ๋์ด
๐ .push() ๋งจ ๋ค element ์ถ๊ฐ - ๊ธธ์ด ๋ฐํ
๐ .pop() ๋งจ ๋ค element ์ญ์ - ๊ฐ์ ๊ฐ์ง๊ณ ๋์ด
๐ .slice()
Array.prototype.slice ๋ start ๋ถํฐ end ๊น์ง ๋์ ๋ฐฐ์ด์์ ๊บผ๋ด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๊ฐ์ ์ง์ด ๋ฃ๋๋ค. start ์ end ๊ฐ ์ฃผ์ด์ง์ง ์์ผ๋ฉด ์ ์ฒด ๋ฐฐ์ด์ ๋ณต์ฌํ๋ค. โ ์์ ๋ณต์ฌ
let arr= [1,2,3] arr.slice()
โ [1,2,3]
์ถ๋ ฅ
.unshift() ์ฌ์ฉ์์
โช๏ธ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๊ฐ ์ญ์ ๋ ๋ฐฐ์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
function removeFromFront(arr) {
return arr.shift
}
๊ฐ ์๋๋ผโ๏ธ
function removeFromFront(arr) {
arr.shift();
return arr;
}
.shift() ์ฌ์ฉ์์
โช๏ธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๊ฐ ์ญ์ ๋ ๋ฐฐ์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
function removeFromBack(arr) {
arr.pop()
return arr;
}
โถ๏ธ removeFromBack([1,2,3]) ์
๋ ฅ์, [1,2] ๊ฐ ์ถ๋ ฅ๋๋ค. (์ ๊ฑฐ๋๊ณ ๋จ์ ๊ฐ์ด ์ถ๋ ฅ๋จ)
(์๋ arr๊ฐ ์์ ๋๋ ์๋ฆฌ)
โญ๏ธ let arr= [1,2,3]
arr.pop();
โถ๏ธ ์ด ๊ฒฝ์ฐ์๋ 3 ์ด ์ถ๋ ฅ๋๋ค.
(์ ๊ฑฐ๋๋ ๊ฐ์ด ์ถ๋ ฅ๋จ)
.slice() ์ฌ์ฉ์์
โช๏ธ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๊ฐ ์ ์ธ๋ **์๋ก์ด ๋ฐฐ์ด**์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
function removeFromBackOfNew(arr) {
return arr.slice(0, arr.length-1)
}
โถ๏ธ ์๋ก์ด ๋ฐฐ์ด์ ๋ฆฌํดํ ๋, ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ์ฌ ๊ธฐ์กด ๋ฐฐ์ด์ ์์ ํ๋ .pop() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
.slice() ์ .push() ํจ๊ป ์ฌ์ฉ์์
๋งจ ๋ค์ ์์๋ฅผ ์ถ๊ฐํ ๋ฐฐ์ด์ ๊ฒฐ๊ณผ๋ก ์ป๊ณ ์ถ์๋ฐ, push๋ '๊ธธ์ด'๋ฅผ ๋ฐํํ๋ ๋ฉ์๋๋ผ ๋ชป์ฐ๊ฒ ๊ณ ,,, ๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผํ์ง?
โถ๏ธ ์ด๋ด ๋, slice ์ push ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค ~!
โช๏ธ ๋ฐฐ์ด๊ณผ ์์๋ฅผ ์
๋ ฅ๋ฐ์ ์๋ก์ด ์์๊ฐ ๋งจ ๋ค์ ์ถ๊ฐ๋ **์๋ก์ด ๋ฐฐ์ด**์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
function addToBackOfNew(arr, el) {
const newArr = arr.slice(); โถ๏ธ slice๋ฅผ ํ๋ฉด ์๋ก์ด ๋ฐฐ์ด์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ณ์์ธ newArr๋ฅผ ๋ง๋ค์ด์ค์ ๊ทธ ์์ ์ ๋ฐฐ์ด์ ๋ฃ๋๊ฒ์
newArr.push(el); // ์ด ๋ถ๋ถ ๊ณ์ฐ๊ฐ์ '๊ธธ์ด'๋ฐํ์ด์ง๋ง,
return newArr; // ์ต์ข
์ ์ผ๋ก newArr ๋ฆฌํดํ๋๊น ๊ฒฐ๊ตญ ๋ฐฐ์ด ์์ฒด๋ฅผ ๋ฐํํ๊ฒ ๋๋ค
}
.slice() ์ .unshift() ํจ๊ป ์ฌ์ฉ์์
๋งจ ์์ ์์๋ฅผ ์ถ๊ฐํ ๋ฐฐ์ด์ ๊ฒฐ๊ณผ๋ก ์ป๊ณ ์ถ์๋ฐ, unshift๋ '๊ธธ์ด'๋ฅผ ๋ฐํํ๋ ๋ฒ ์๋๋ผ ๋ชป์ฐ๊ฒ ๊ณ ,,, ๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผํ์ง?
โถ๏ธ ์ด๋ด ๋, slice์ unshift๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค ~!
โช๏ธ ๋ฐฐ์ด๊ณผ ์์๋ฅผ ์
๋ ฅ๋ฐ์ ๋งจ์์ ์๋ก์ด ์์๊ฐ ์ถ๊ฐ๋ **์๋ก์ด ๋ฐฐ์ด**์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
function addToFrontOfNew(arr, el) { // arr=[1,2,3] el=0 ์ด๋ผ๊ณ ์น๋ฉด
const newArr= arr.slice() // newArr=[1,2,3] (slice()๋ก ๋ณต์ฌ๋ง ํ์ผ๋๊น)
newArr.unshift(el) // unshift๋ ๊ธธ์ด ๋ฐํํ๋๊น, ์ด ๋ถ๋ถ ๊ณ์ฐ๊ฐ์ 4
return newArr; // ๋ฐฐ์ด ์์ฒด๋ฅผ ๋ฆฌํดํ๋๊น, ์ต์ข
์ ์ผ๋ก [0,1,2,3] ์ถ๋ ฅ
}
< ์๋ ๋ฐฐ์ด ์์ ๋ฆฌํด vs. ์๋ก์ด ๋ฐฐ์ด ๋ฆฌํด > ๋น๊ต
โช๏ธ ๋ฐฐ์ด๊ณผ ์ธ๋ฑ์ค๋ฅผ ์
๋ ฅ๋ฐ์ ํด๋น ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ์ธํ ๋ฐฐ์ด์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
๐ถ push ์ฌ์ฉ
function getAllElementsButNth(arr, n) { โถ๏ธ arr=[1,2,3] n=1 ์ด๋ผ๊ณ ๊ฐ์ . (2๋ฅผ ๋บ๊ฑฐ์)
let result = [];
for (let i = 0; i < arr.length; i++) { i=0
if (i !== n) { i๊ฐ 1์ด ์๋๋ผ๋ฉด (i๊ฐ 1์ธ ์ฐจ๋ก๊ฐ ์ค๋ฉด ๋ฌด์๋๊ณ ๋ฐ๋ก i=2๋ก ๋์ด๊ฐ. if๋ฌธ์ด for๋ฌธ ์์ ๊ฐํ์์ผ๋, for๋ฌธ ์์์ ๊ณ์ ๋ฐ๋ณต๋ ์๋ฐ์ ์์.)
result.push(arr[i]); [].push(arr[0]) ๋งจ๋ค์ ์์์ถ๊ฐ (๊ธธ์ด๋ฐ) [1]
}
}
return result; โถ๏ธ ์ต์ข
์ ์ผ๋ก [1,3] ์ถ๋ ฅ
}
โช๏ธ ๋ฐฐ์ด๊ณผ ์ธ๋ฑ์ค๋ฅผ ์
๋ ฅ๋ฐ์ ํด๋น ์ธ๋ฑ์ค์ ์์๋ฅผ ์ ์ธํ **์๋ก์ด ๋ฐฐ์ด**์ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
๐ถ slice ์ฌ์ฉ
function getAllElementsButNth(arr, n) {
if(n > arr.length) {
return arr;
}
let arr1= arr.slice(0,n)
let arr2= arr.slice(n+1,arr.length)
return arr1.concat(arr2);
}
๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ ๊ตฌํ๊ธฐ
let array = [1,2,3,4,5]
array[array.length - 1]
// 5 ์ถ๋ ฅ.
โ array[4] ๋ array์ 4๋ฒ์งธ index ์ถ๋ ฅํ๋ผ๋ ์๋ฏธ๋๊น ๋งจ ๋ง์ง๋ง์ ์๋ 5 ์ถ๋ ฅ๋จ.
.
๋ฐฐ์ด : ์์๊ฐ ์๋ค
๊ฐ์ฒด : ์๋ฏธ(key)๊ฐ ์๋ค
๐ for ... in ๊ฐ์ฒด์ ์ฐ๋ ๋ฐ๋ณต๋ฌธ
๐ for ... of ๋ฐฐ์ด์ ์ฐ๋ ๋ฐ๋ณต๋ฌธ
.
let tweet = {
writer: 'stevelee',
createdAt: '2019-09-10 12-03:33',
content: 'ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!'
};
์
๋ ฅ ์ถ๋ ฅ
tweet.content // -> "ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!"
tweet['content'] // -> "ํ๋ฆฌ์ฝ์ค ์ฌ๋ฐ์ด์!"