๐ ์ด ํฌ์คํ ์์๋ JavaScript์ ๋ฐฐ์ด์ ๊ตฌ์กฐ, new Array ์ ์ธ๋ฐฉ์๊ณผ ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ ์ธ ๋ฐฉ์์ ๋ฐ๋ฅธ ์ฐจ์ด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๐ฅ Why use arrays?
๐ฅ "new Array declaration" & "literal declaration"
๐ฅ CRUD in Array
โ๏ธ ๋ฐฐ์ด(Array)์ ์ํ๊ด ๊ฐ์์. ์ฌ๋ฌ๊ฐ์ ๋ค์ํ ๋ฐ์ดํฐ ํ์
์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๊ณ , ์ด ์ฌ๋ฌ๊ฐ์ ์์น(index๊ฐ)์ ๋ฐ๋ผ ์ฝ์ด๋ค์ด๋๋ฐ ์ ์ฉํฉ๋๋ค. ๋ง์น ์ํ๊ด์ ์ข์ ๋ฒํธ๊ฐ๋ฅผ ํตํด ๋๊ตฐ๊ฐ๋ฅผ ๊ฐ๋ฅดํฌ ์ ์๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค.
โ๏ธ ๋ฐฐ์ด ๋ด์๋ ๋ฌธ์, ์ซ์, ๋ฐฐ์ด, ํจ์ ๋ฑ ๋ค์ํ Data Type์ ํจ๊ป ๋ด์ ์ ์๊ณ , ๋ฐฐ์ด ๋ด์ ๋ด๊ธด Data๋ฅผ ์์ ๋๋ ์์๋ผ ๋ถ๋ฆ
๋๋ค.
โ๏ธ ํนํ, ๋ฐฐ์ด ๋ด ์์๋ค์ Create, Read, Update, Delete ํ๋๋ฐ ์ ์ฉํ ๋งค์๋๋ค์ด ๋ค์ํ๊ฒ ์ ๊ณต๋๊ณ ์์ต๋๋ค.
let myArray = [19, 44, 'good', false] console.log(myArray) let first = myArray[0] // ์ฒซ๋ฒ์งธ(0๋ฒ) ์์ let second = myArray[1] // ๋๋ฒ์งธ(1๋ฒ) ์์ let third = myArray[2] // ์ธ๋ฒ์งธ(2๋ฒ) ์์ let fourth = myArray[3] // ๋ค๋ฒ์งธ(3๋ฒ) ์์ console.log(first) // 19 console.log(second) // 44 console.log(third) // 'good' console.log(fourth) // false console.log(myArray.length) // 4 myArray[0] = 500 console.log(myArray) // [ 500, 44, 'good', false ] myArray[3] = true console.log(myArray) // [ 500, 44, 'good', true ]
let myArray1 = [1] console.log(`๋ง์ง๋ง ์์์ index ๊ฐ : ${myArray1.indexOf(1)}`) // ๋ง์ง๋ง ์์์ index ๊ฐ : 0 console.log(`myArray ์์์ ๊ฐฏ์ -1 ๊ฐ : ${myArray1.length - 1}`) // myArray ์์์ ๊ฐฏ์ -1 ๊ฐ : 0 console.log(myArray1.indexOf(1) === myArray1.length - 1) // true // let myArray2 = [1,2,3,4,5,6,7,8,9,10] console.log(`๋ง์ง๋ง ์์์ index ๊ฐ : ${myArray2.indexOf(10)}`) // ๋ง์ง๋ง ์์์ index ๊ฐ : 9 console.log(`myArray ์์์ ๊ฐฏ์ -1 ๊ฐ : ${myArray2.length - 1}`) // myArray ์์์ ๊ฐฏ์ -1 ๊ฐ : 9 console.log(myArray2.indexOf(10) === myArray2.length - 1) // true // let myArray3 = [100, 200, 300, 400, 500, 1000, 2000, 3000, 4000, 'Hello', 'last'] console.log(`๋ง์ง๋ง ์์์ index ๊ฐ : ${myArray3.indexOf('last')}`) // ๋ง์ง๋ง ์์์ index ๊ฐ : 10 console.log(`myArray ์์์ ๊ฐฏ์ -1 ๊ฐ : ${myArray3.length - 1}`) // myArray ์์์ ๊ฐฏ์ -1 ๊ฐ : 10 console.log(myArray3.indexOf('last') === myArray3.length - 1) // true
๋ค์ฐจ์ ๋ฐฐ์ด์ ์ค์ฒฉ ๋ฐฐ์ด์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ๋ฐฐ์ด ๋ด์ ๋ ๋ค๋ฅธ ๋ฐฐ์ด์ด ๊น์ด๋ฅผ ์ด๋ฃจ๋ฉฐ ์กด์ฌํ๋ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค.
let nestedArray = [1, ['Jaewon', 'Seoul', 'Male', [true, false]], ['๐', '๐', '๐ฆ'], 'JavaScript'] console.log(nestedArray[0]) // 1 console.log(nestedArray[1]) // [ 'Jaewon', 'Seoul', 'Male', [ true, false ] ] console.log(nestedArray[1][0]) // 'Jaewon' console.log(nestedArray[1][1]) // 'Seoul' console.log(nestedArray[1][2]) // 'Male' console.log(nestedArray[1][3]) // [ true, false ] console.log(nestedArray[1][3][0]) // true console.log(nestedArray[1][3][1]) // false console.log(nestedArray[2]) // [ '๐', '๐', '๐ฆ' ] console.log(nestedArray[3]) // JavaScript
โ๏ธ ๋ฐฐ์ด์ "new Array ์ ์ธ"๊ณผ "๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ด์ฉํ ์ ์ธ" ์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1) "new Array ์ ์ธ"
let myArray = new Array() console.log(myArray) // []
2) "๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ด์ฉํ ์ ์ธ"
let myArray = [] console.log(myArray) // []
"new Array ์ ์ธ"์ ํ๋์ ์ซ์๋ง ๋ฃ์ผ๋ฉด ๋ฐฐ์ด์ ํฌ๊ธฐ๋ก ์ธ์ํ๊ณ , ์ฌ๋ฌ๊ฐ ์ซ์๋ฅผ ์ ๋ฌํ๋ฉด ๋ฐฐ์ด์ ์์๊ฐ์ผ๋ก ์ด๊ธฐํํฉ๋๋ค. ์ด๋ฐ ์ด์ ๋ก "new Array ์ ์ธ"๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ ํ๋๋ง ์์๋ก ๊ฐ์ง ๋ฐฐ์ด์ ์์ฑํ ์ ์์ต๋๋ค.
let myArray = new Array(5) console.log(myArray) // [ <5 empty items> ] console.log(myArray[0]) // undefined console.log(myArray[1]) // undefined console.log(myArray[2]) // undefined console.log(myArray[3]) // undefined console.log(myArray[4]) // undefined
"new Array ์ ์ธ"์ ์ฌ๋ฌ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ์ด๋ฅผ ์์๊ฐ์ผ๋ก ์ธ์ํฉ๋๋ค.
let myArray = new Array(5, 4, 3, 2, 1) console.log(myArray) // [ 5, 4, 3, 2, 1 ] console.log(myArray[0]) // 5 console.log(myArray[1]) // 4 console.log(myArray[2]) // 3 console.log(myArray[3]) // 2 console.log(myArray[4]) // 1
"new Array ์ ์ธ"๋ฅผ ์ฌ์ฉํ ๋, 1๊ฐ์ ๋ฌธ์์ด์ ๋ฃ์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ด๋๋ ๋ 1๊ฐ์ ๋ฌธ์ํ ์์๋ง ๊ฐ์ง ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
let myArray = new Array("5") console.log(myArray) // [ '5' ] console.log(myArray[0]) // 5
์ด๋ฒ์๋ toString() ๋งค์๋๋ฅผ ํตํด "new Array ์ ์ธ"ํ ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ํฉ์ณ๋ณด๊ฒ ์ต๋๋ค. ์ด์ฒ๋ผ "new Array ์ ์ธ" ๋ฐฉ์์ ๋ค์ ์ง๊ด์ฑ์ด ๋จ์ด์ง๋๋ค.
let myArray1 = new Array(5) console.log(myArray1.toString()) // ,,,, let myArray2 = new Array(5, 4, 3, 2, 1) console.log(myArray2.toString()) // 5,4,3,2,1
์ด์๋ ๋ค๋ฅด๊ฒ " ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ ์ธ"์ ๋ฐฐ์ด์ ์ํ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค. ๋ํ ๊ฐ๊ฒฐํ๋ค๋ ์ฅ์ ์ผ๋ก ๊ถ์ฅํ๊ณ ์์ต๋๋ค.
// myArray0 let myArray0 = [] console.log(myArray0) // [] console.log(myArray0[0]) // undefined console.log(myArray0.toString()) // myArray1 let myArray1 = [5] console.log(myArray1[0]) // 5 console.log(myArray1.toString()) // "5" // myArray2 let myArray2 = [5, 4, 3, 2, 1] console.log(myArray2[0]) // 5 console.log(myArray2[1]) // 4 console.log(myArray2[2]) // 3 console.log(myArray2[3]) // 2 console.log(myArray2[4]) // 1 console.log(myArray2.toString()) // "5,4,3,2,1"
let myArray = [100, 'Python', 7, false] myArray.push('Hello') console.log(myArray) // [ 100, 'Python', 7, false, 'Hello' ] myArray.push('500', '300') console.log(myArray) // [ 100, 'Python', 7, false, 'Hello', '500', '300' ] myArray.push(['Jaewon', 33, 'Seoul', 'Male']) console.log(myArray) // [100, 'Python', 7, false, 'Hello', '500', '300', [ 'Jaewon', 33, 'Seoul', 'Male' ]]
let myArray = [100, 'Python', 7, false] let getPop = myArray.pop() console.log(getPop) // false console.log(myArray) // [ 100, 'Python', 7 ] // getPop = myArray.pop() console.log(getPop) // 7 console.log(myArray) // [ 100, 'Python'] // getPop = myArray.pop() console.log(getPop) // 'Python' console.log(myArray) // [ 100] // getPop = myArray.pop() console.log(getPop) // 100 console.log(myArray) // []
let myArray = [100, 'Python', 7, false] myArray.unshift('Hello') console.log(myArray) // [ 'Hello', 100, 'Python', 7, false ] myArray.unshift('500', '300') console.log(myArray) // [ '500', '300', 'Hello', 100, 'Python', 7, false ] myArray.unshift(['Jaewon', 33, 'Seoul', 'Male']) console.log(myArray) // [[ 'Jaewon', 33, 'Seoul', 'Male' ], '500', '300', 'Hello', 100, 'Python', 7, false]
let myArray = [100, 'Python', 7, false] let getPop = myArray.shift() console.log(getPop) // 100 console.log(myArray) // [ 'Python', 7, false ] // getPop = myArray.shift() console.log(getPop) // "Python" console.log(myArray) // [ 7, false ] // getPop = myArray.shift() console.log(getPop) // 7 console.log(myArray) // [ false ] // getPop = myArray.shift() console.log(getPop) // false console.log(myArray) // []
โ๏ธ ์ฒซ๋ฒ์งธ ์ธ์๋ ์์ ์ง์ ์ ์ง์ ํ ๋ ์ฐ์ด๊ณ , ๋๋ฒ์งธ ์ธ์๋ ์ญ์ ํ ๊ฐฏ์๋ฅผ ์ง์ ํฉ๋๋ค. ์ธ๋ฒ์งธ ์ธ์๋ ์์ ์ง์ ๋ถํฐ ๋์ฒดํ ์์๋ฅผ ์ ๋ฌํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ์ธ์๋ฅผ 1๊ฐ๋ง ์ธ์๋ ์์ผ๋, ์์๋ฅผ ์ง์ผ์ผํฉ๋๋ค. ์๋ฅผ๋ค์ด, ์ญ์ ํ์ง ์๊ณ ์ฝ์ ๋ง ํ ๊ฒฝ์ฐ์ ๋๋ฒ์งธ ์ธ์์๋ 0์ ์ฝ์ ํด์ค๋๋ค. splice ๋งค์๋๋ ์๋ณธ์ ์ง์ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์ ์ํ์ฌ ์ฌ์ฉํด์ผํฉ๋๋ค.
let spliceArray = [1, 100, 'hi', true, 99, false] console.log(spliceArray.splice(0, 2, [10, 20])) // [ 1, 100 ] console.log(spliceArray) // [ [ 10, 20 ], 'hi', true, 99, false ] console.log(spliceArray.splice(1, 1, 'bye')) // [ 'hi' ] console.log(spliceArray) // [ [ 10, 20 ], 'bye', true, 99, false ] console.log(spliceArray.splice(0, 5, 'reset')) // [ [ 10, 20 ], 'bye', true, 99, false ] console.log(spliceArray) // [ 'reset' ]
let myArray1 = ['ํ๋', '๋', '์ '] let myArray2 = ['์ ', '๋', 'ํ๋'] let conatArray = myArray1.concat(myArray2); console.log(conatArray); // [ 'ํ๋', '๋', '์ ', '์ ', '๋', 'ํ๋' ]
โ๏ธ slice ๋งค์๋๋ ๋ฐฐ์ด์ ์ถ์ถํ๊ธฐ ์ํด 2๊ฐ์ ๊ฐ์ ์ ๋ฌํ ์ ์๋๋ฐ, ์ฒซ๋ฒ์งธ๋ start index์ด๊ณ , ๋๋ฒ์งธ๋ end index์ ๋๋ค. start index์ ๊ฐ์ ํฌํจ๋๊ณ , end index์ ๊ฐ ์ด์ ๊น์ง ์ถ์ถํด์ฌ ์ ์์ต๋๋ค. ๋ํ end index๋ฅผ ๋ฃ์ด์ฃผ์ง ์์ผ๋ฉด, start index๋ถํฐ ๋ง์ง๋ง ์์๊น์ง ์ถ์ถํฉ๋๋ค. ๋ํ slice ๋งค์๋๋ ์๋ณธ ๋ฐฐ์ด์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ฆ, ๋ฐฐ์ด์ ์์๋ฅผ ์ถ์ถํ์ฌ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
let sliceArray = [1, 100, 'hi', true, 99, false] console.log(sliceArray.slice(0)) // [ 1, 100, 'hi', true, 99, false ] console.log(sliceArray.slice(0,-1)) // [ 1, 100, 'hi', true, 99 ] console.log(sliceArray.slice(3,5)) // [ true, 99 ] console.log(sliceArray.slice(1, 4)) // [ 100, 'hi', true ] console.log(sliceArray.slice(-1)) // [ false ] console.log(sliceArray) // [ 1, 100, 'hi', true, 99, false ]