SEB FE / Section1 / Unit9 / JavaScript ๋ฐฐ์ด, ๊ฐ์ฒด
๐ Today I Learned
- ๋ฐฐ์ด(Array)
๋ค๋์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฐ์ดํฐ ํ์
์ธ ๋ฐฐ์ด(Array)
. ์์๊ฐ ์๋ ๊ฐ์ ์๋ฏธํ๋ค.
์ธ๋ฑ์ค(index)
๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, 1์ด ์๋ 0๋ถํฐ ๋ฒํธ๋ฅผ ๋งค๊ธด๋ค
73์ 0๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ, 96์ 4(์ฌ)๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ
์์(element)
๋ผ๊ณ ๋ถ๋ฅธ๋ค.๋ฐฐ์ด์ ์ด๋ป๊ฒ ์ ์ํ๊ณ ์ฌ์ฉํ๋๊ฐ?
๋๊ดํธ(square bracket)
๋ฅผ ์ด์ฉํด์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ฐ๊ฐ์ ์์(element)
๋ ์ผํ(comma)
๋ก ๊ตฌ๋ถ์ ํด ์ค๋ค.
let myNumber = [73, 98, 86, 61, 96];
// "`myNumber`๋ผ๋ ๋ฐฐ์ด์ 3๋ฒ์งธ ์ธ๋ฑ์ค"๋ฅผ ์กฐํํ๋ ค๋ฉด
myNumber[3];
// expected output: 61
myNumber[3] = 200;
// myNumber 3๋ฒ์งธ ๊ฐ์ 300์ผ๋ก ํ ๋นํด ์ค๋ค
myNumber;
// expected output: [73, 98, 86, 200, 96];
let fruits = [
'banana',
'apple',
'pineapple'
];
fruits์ 2๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ์?
// [0] 'banana', [1] 'apple', [2] 'pineapple'
๋ต์ 'pineapple'
fruits์ 3๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ์?
// (2๋ฒ์งธ ๊ฐ 'pineapple' ๋ค์์ผ๋ก ์ฃผ์ด์ง ๊ฐ์ด ์๊ธฐ ๋๋ฌธ์) ์ธ๋ฑ์ค๋ฅผ ๋ฒ์ด๋๋ฉด undefined
๊ฐ ๋์จ๋ค.
๋ต์ undefined
let myNumber = [[13, 30], [73, 8], [44, 17]]
myNumber;
[Array(2), Array(2), Array(2)]
0: [13, 30]
1: [73, 8]
2: [44, 17]
// expected output: [73, 8]
// ๋ฐฐ์ด ์์ ๋ฐฐ์ด์ด ์๋ค.
myNumber[1][0]
// expected output: 73
2์ฐจ์ ๋ฐฐ์ด์ด๋ผ ํ๋ค. array ์์ชฝ์ผ๋ก ์ค์ฒฉ์ ์์ผ์ 3์ฐจ์ ๋ฐฐ์ด ๋ฑ์ผ๋ก ๋ง๋ค ์ ์๋ค.
// myNumber๋ผ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์์๋ด๋ ค๋ฉด
myNumber.length;
// expected output: 4
์์ฑ(property)
์ ์ ๊ทผํ ์ ์๋ค.๋ช
๋ น(method)
๋ ์คํํ ์ ์๋ค.์๊ดํธ()
๋ฅผ ์ด๊ณ ๋ ํํ๋ก ์คํํ๋ค.let myNumber = [73, 98, 86, 61];
// myNumber๋ผ๋ ๋ฐฐ์ด ๋์ 96์ด๋ผ๋ ๊ฐ์ ์ถ๊ฐํ๋ ค๋ฉด (.push ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค)
myNumber.push(96);
myNumber;
// expected output: [73, 98, 86, 61, 96];
let myNumber = [73, 98, 86, 61];
// myNumber๋ผ๋ ๋ฐฐ์ด ๋ง์ง๋ง ๊ฐ์ ์ญ์ ํ๋ ค๋ฉด (.pop ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค)
myNumber.pop();
myNumber;
// expected output: [73, 98, 86];
let muNum = [73, 98, 86, 61];
"๋ฐฐ์ด myNum์ n๋ฒ์งธ ์ธ๋ฑ์ค"๋ฅผ ์ถ๋ ฅํ์ console.log(myNum[n])
์กฐ๊ฑด:
1. ์ซ์(n)์ 0๋ถํฐ ์์ํ๋ค let n = 0;
2. ์ซ์(n)๋ฅผ ์ธ์ ๊น์ง ๋ฐ๋ณตํ ๊น?
ใด ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ค n < myNum.length;
3. ์ซ์(n)๋ 1์ฉ ์ฆ๊ฐํ๋ค n++;
(์ฆ๊ฐ ์ฐ์ฐ์)
for (let n = 0; n < myNum.length; n++;) {
console.log(myNum[n]); // ๋ฐ๋ณตํ ๋ด์ฉ์ ๋จผ์ ๋ฃ์ด ์ค๋ค.
}
let myNum = [10, 20, 40, 10];
let sum = 0;
for (let n = 0; n < myNum.length; n++) {
sum = sum + myNum[n]
// ๋ฐ๋ณตํ ๊ตฌ๋ฌธ
}
console.log(sum);
// expected output: 80
sum
์ ํ ๋น์ ํด ์ฃผ์ง ์์ผ๋ฉด undefined
๊ฐ ๋์ด undefined + 10
= NaN
์ ๋ฐํํ๋ค.
๊ฐ์ ์ฌํ ๋น ํ ์ ์๋๋ก sum
์ 0
์ ์ด๊ธฐํํด ๋ฌ์ผ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ ๊ฐ์ด ๋ฐฐ์ด์ธ์ง ์๋์ง ํ๋ณํ ์ ์๋ Array.isArray
let words = ['ํผ', '๋', '๋๋ฌผ']]
typeof '๋ฌธ์์ด'
// expected output: "string"
typeof 123
// expected output: "number"
typeof words
// expected output: "object"
typeof [1,2,3]
// expected output: "object"
let obj = { a: 1}
typeof obj;
// expected output: "object"
์ฌ๊ธฐ์ ๋ฌด์์ด Array
์ธ์ง ๊ฐ์ฒด
์ธ์ง ๊ตฌ๋ถํ ์ ์๊ธฐ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์จ์ผ ํ๋ค.
๊ทธ๋์ Array.isArray
๋ฅผ ์ฌ์ฉํ๋ค.
Array.isArray('๋ฌธ์์ด')
// expected output: false
Array.isArray(123)
// expected output: false
Array.isArray(words)
// expected output: ture
Array.isArray([1,2,3])
// expected output: ture
// Array.isArray์ ์ง์ ์
๋ ฅํ์ฌ๋ true๋ฅผ ๋ฐํํ๋ค
Array.isArray([])
// expected output: ture
// ์ด์ด ๋น์ด๋ ๋ฐฐ์ด์ด ๋ค์ด๊ฐ๋ฉด true๋ฅผ ๋ฐํํ๋ค
input์ ๋ด๊ฐ ๊ฒ์ฌํ๊ณ ์ถ์ ๊ฐ์ฒด๋ช ์ ์์ฑํ๋ฉด ๋๊ณ , ๊ฒฐ๊ณผ๋ ture / false ๋ ์ค ํ๋๋ง ๋์จ๋ค.
let arr = ['code'], [states'];
// ์ฝ์๋ก๊ทธ๋ก๋ ๋ณผ ์ ์์ง๋ง
// ํ
์ด๋ธ๋ก ํ์ธ์ด ๊ฐ๋ฅํ๋ค
// index์ Value๊ฐ ํ์ธ ๊ฐ๋ฅํ๋ค
console.table(arr)
arr.push('pre')
.push
๋ ๊ธฐ์กด ๋ฐฐ์ด(Array)์๋ค๊ฐ ์์(element)๋ฅผ ์ถ๊ฐํ๋ ๋ช
๋ น(method)์ด๋ค.arr.pop()
// expected output: "pre"
console.table(arr)
.pop
๋ ๊ธฐ์กด ๋ฐฐ์ด(Array)์ ๋ง์ง๋ง ์์(element)๋ฅผ ์ญ์ ํ๋ ๋ช
๋ น(method)์ด๋ค.arr.shift()
// expected output: "code"
.shift
๋ ๊ธฐ์กด ๋ฐฐ์ด(Array)์ ์ฒซ ๋ฒ์งธ ์์(element)๋ฅผ ์ญ์ ํ๋ ๋ช
๋ น(method)์ด๋ค.arr.unshift('creative')
// expected output: 2
// 2๋ length์ด๋ค
console.table(arr)
.unshift
๋ ๊ธฐ์กด ๋ฐฐ์ด(Array)์ ์ฒซ ๋ฒ์งธ์ ์์(element)๋ฅผ ์ถ๊ฐํ๋ ๋ช
๋ น(method)์ด๋ค.
- ๋ค์ element ์ถ๊ฐ: push
- ๋ค์ element ์ญ์ : pop
- ์์ element ์ถ๊ฐ: unshift
- ์์ element ์ญ์ : shift
addToFront
addToBack
removeFromFront
removeFromBack
ํน์ ํ ๋จ์ด๊ฐ ๋ฐฐ์ด ์์ ๋ค์ด์๋์ง ์๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์๋ค.
ํน์ ํ ๋จ์ด๊ฐ ์์ ์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐํํ๊ณ , ์์ ์ -1์ ๋ฐํํ๋ค.
๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ค.
let words = ['Radagast', 'the', 'Brown'];
words.indexOf('the')
// expected output: 1
// ์ธ๋ฑ์ค์ n๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.
words.indexOf('Brown')
// expected output: 2
words.indexOf('Radagast')
// expected output: 0
words.indexOf('๊ทค')
// expected output: -1
// ๋ฐฐ์ด์ ์๋ ๋จ์ด๋ -1์ ๋ฐํํ๋ค.
Array์ ํน์ ํ ์๋ฆฌ๋จผํธ๋ฅผ ์ฐพ๊ณ ์ ํ ๋ ๊ฒ์ฌํ๋ ค๋ฉด (ํน์ ์๋ฆฌ๋จผํธ์ ์กด์ฌ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ค๋ฉด)
words.indexOf('Brown') !== -1
// expected output: true
words.indexOf('๊ทค') !== -1
// expected output: false
ํน์ ํ ๋ฐฐ์ด์ ์ฐพ๊ณ ์ ํ๋ ์๋ฆฌ๋จผํธ๊ฐ ์๋์ง ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํํด ์ค๋ค.
hasElement(๋ฐฐ์ด, ์ฐพ์ผ๋ ค๋ ์๋ฆฌ๋จผํธ)
// expected output: true or false
function hasElement(arr, element) {
return arr.indexOf(element) !== -1
}
hasElement(words, 'Browns')
// expected output: true
hasElement(words, '๊ทค')
// expected output: false
๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ผ ์๋ ๋ฉ์๋๋ ์๋ค.
ํน์ ํ ๋ฐฐ์ด์ ์ฐพ๊ณ ์ ํ๋ ์๋ฆฌ๋จผํธ๊ฐ ์๋์ง ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ๋ฐํํด ์ค๋ค.
ํน์ ์๋ฆฌ๋จผํธ๊ฐ ์๋์ง ์กด์ฌ ์ฌ๋ถ๋ง ์ ์ ์๋ค.
words.includes('Brown')
// expected output: true
words.includes(words, '๊ทค')
// expected output: false