๐ค๋ฐฐ์ด(Arrays)
JavaScript์์์ ๋ฐฐ์ด์ “์ ์ ๋ฐฐ์ด”์ด ์๋! “์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด”์! →๊ฐ์ฒด
const a = []
typeof a //'object'
๋ฐฐ์ด์ ์ ์์ ํน์ง
- ํค์ ์์ฑ๋ค์ ๋ด๊ณ ์๋ ์ฐธ์กฐ ํ์ ์ ๊ฐ์ฒด(object)
- ์์๋ฅผ ๋ณด์ฅํ๋ ํน์ง์ด ์์
- ์ฃผ๋ก ๋๊ดํธ๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ๊ณ , 0์ ํฌํจํ ์์ ์ ์ ์ธ๋ฑ์ค๋ก ํน์ ๊ฐ์ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ฐฐ์ด์ ๊ธธ์ด๋ array.length ํํ๋ก ์ ๊ทผ ๊ฐ๋ฅ
- (์ฐธ๊ณ ) ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ array.length – 1๋ก ์ ๊ทผ
const numbers = [1,2,3,4,5]
console.log(numbers[0]) //1
console.log(numbers[-1]) //undefined
console.log(numbers.length)//5
console.log(numbers[numbers.length -1]) //5
console.log(numbers[numbers.length -2]) //4
๋ฐฐ์ด ๊ด๋ จ ์ฃผ์ ๋ฉ์๋
๊ธฐ๋ณธ ๋ฐฐ์ด ์กฐ์
- reverse
- push & pop
- unshift & shift
- includes
- indexOf
- join
|reverse
- array.reverse()
- ์๋ณธ ๋ฐฐ์ด์ ์์๋ค์ ์์๋ฅผ ๋ฐ๋๋ก ์ ๋ ฌ
const numbers = [1,2,3,4,5]
numbers.reverse()
console.log(numbers) //[5,4,3,2,1]
|push & pop
- array.push()
- ๋ฐฐ์ด์ ๊ฐ์ฅ ๋ค์ ์์ ์ถ๊ฐ
- array.pop()
- ๋ฐฐ์ด์ ๋ง์ง๋ง ์์ ์ ๊ฑฐ
const numbers = [1,2,3,4,5]
numbers.push(100)
console.log(numbers) // [1,2,3,4,5,100]
numbers.pop()
console.log(numbers) // [1,2,3,4,5]
|unshift & shift
- array.unshift()
- ๋ฐฐ์ด์ ๊ฐ์ฅ ์์ ์์ ์ถ๊ฐ
- array.shift()
- ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์ ์ ๊ฑฐ
const numbers = [1,2,3,4,5]
numbers.unshift(100)
console.log(numbers) // [100,1,2,3,4,5]
numbers.shift(100)
cosole.log(numbers) // [1,2,3,4,5]
|includes
- array.includes(value)
- ๋ฐฐ์ด์ ํน์ ๊ฐ์ด ์กด์ฌํ๋์ง ํ๋ณ ํ ์ฐธ ๋๋ ๊ฑฐ์ง ๋ฐํ
const numbers = [1,2,3,4,5]
console.log(numbers.includes(1)) //true
console.log(numbers.includes(100)) //false
|indexOf
- array.indexOf(value)
- ๋ฐฐ์ด์ ํน์ ๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธ ํ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ๋ก ์ฐพ์ ์์์ ์ธ๋ฑ์ค ๋ฐํ
- ๋ง์ฝ ํด๋น ๊ฐ์ด ์์ ๊ฒฝ์ฐ -1 ๋ฐํ
const numbers = [1,2,3,4,5]
let result
result = numbers.indexOf(3) //2
console.log(result)
result = numbers.indexOf(100) //-1
console.log(result)
|join
- array.join([seperator])
- ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๊ตฌ๋ถ์๋ฅผ ์ด์ฉํด ์ฐ๊ฒฐํ์ฌ ๋ฐํ
- seperator(๊ตฌ๋ถ์)๋ ์ ํ์ ์ผ๋ก ์ง์ ๊ฐ๋ฅํ๋ฉฐ, ์๋ต์ ์ผํ๋ฅผ ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ์ฌ์ฉ
const numbers = [1,2,3,4,5]
let result
result = numbers.join()
console.log(result) // 1,2,3,4,5
result = numbers.join('')
console.log(result) //12345
result = numbers.join(' ')
console.log(result) // 1 2 3 4 5
result = numbers.join('-')
console.log(result) //1-2-3-4-5
|Seperator operator(...)
- spread operator(…)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด ๋ด๋ถ์์ ๋ฐฐ์ด ์ ๊ฐ ๊ฐ๋ฅ.
- ES5๊น์ง๋ Array.concat() ๋ฉ์๋๋ฅผ ์ฌ์ฉ.
- ์์ ๋ณต์ฌ์ ํ์ฉ ๊ฐ๋ฅ
const array = [1, 2, 3]
const newArray = [0, ...array, 4]
console.log(newArray) // [0, 1, 2, 3, 4
๋ฐฐ์ด ๊ด๋ จ ์ฃผ์ ๋ฉ์๋ (์ฌํ Array Helper Methods)
- ๋ฐฐ์ด์ ์ํํ๋ฉฐ ํน์ ๋ก์ง์ ์ํํ๋ ๋ฉ์๋
- ๋ฉ์๋ ํธ์ถ ์ ์ธ์๋ก callback ํจ์๋ฅผ ๋ฐ๋ ๊ฒ์ด ํน์ง
- callback ํจ์: ์ด๋ค ํจ์์ ๋ด๋ถ์์ ์คํ๋ ๋ชฉ์ ์ผ๋ก ์ธ์๋ก ๋๊ฒจ ๋ฐ๋ ํจ์๋ฅผ ๋งํจ
- forEach
- map
- filter
- reduce
- find
- some
- every
|forEach
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ํ ๋ฒ์ฉ ์คํ
- ์ฝ๋ฐฑ ํจ์๋ 3๊ฐ์ง ๋งค๊ฐ๋ณ์๋ก ๊ตฌ์ฑ
- element: ๋ฐฐ์ด์ ์์
- index: ๋ฐฐ์ด ์์์ ์ธ๋ฑ์ค
- array: ๋ฐฐ์ด ์์ฒด
- ๋ฐํ ๊ฐ(return)์ด ์๋ ๋ฉ์๋
//# array.forEach(callback(element[, index[,array]])
array.forEach((element,index,array) => {
//do something
}
const fruits = ['๋ธ๊ธฐ','์๋ฐ','์ฌ๊ณผ','์ฒด๋ฆฌ']
fruits.forEach((fruit,index) => {
console.log(fruit,index)
})
//๋ธ๊ธฐ 0
//์๋ฐ 1
//์ฌ๊ณผ 2
//์ฒด๋ฆฌ 3
1,2,3 ์ถ๋ ฅํ๊ธฐ
const test = [1,2,3]
//๋ฐฉ๋ฒ1
for (let i=0 ; i<test.length ; i++){
console.log(test[i])
}
//๋ฐฉ๋ฒ2
test.forEach(e=>console.log(e))
//๋ฐฉ๋ฒ3
for(t of test){
consonle.log(t)
}
|map
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ํ๋ฒ์ฉ ์คํ
- ์ฝ๋ฐฑ ํจ์์ ๋ฐํ ๊ฐ์ ์์๋ก ํ๋ ์๋ก์ด ๋ฐฐ์ด ๋ฐํ
- ๊ธฐ์กด ๋ฐฐ์ด ์ ์ฒด๋ฅผ ๋ค๋ฅธ ํํ๋ก ๋ฐ๊ฟ ๋ ์ ์ฉ
//# array.map(callback(element[, index[, array]]))
array.map((elemnt,index,array) => {
//do something
})
const numbers = [1,2,3,4,5]
const doubleNums = numbers.map((num) => {
return num * 2
})
console.log(doubleNums) // [2,4,6,8,10]
|filter
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ํ ๋ฒ์ฉ ์คํ
- ์ฝ๋ฐฑ ํจ์์ ๋ฐํ ๊ฐ์ด ์ฐธ์ธ ์์๋ค๋ง ๋ชจ์์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํ
- ๊ธฐ์กด ๋ฐฐ์ด์ ์์๋ค์ ํํฐ๋ง ํ ๋ ์ ์ฉ
//# array.filter(callback(element[, index[, array]]))
array.filter((element,index,array) => {
//do something
})
const numbers = [1,2,3,4,5]
const oddNums = numbers.filter((num) => {
return num %2
})
console.log(oddNums) //1,3,5
const test = [1,2,3]
test.filter(e => e%2 ===1) //[1,3]
test.filter(e => e%2 ===0) //[2]
test.filter(e => {
return e%2===0
}) //[2]
|reduce
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ํ ๋ฒ์ฉ ์คํ
- ์ฝ๋ฐฑ ํจ์์ ๋ฐํ ๊ฐ๋ค์ ํ๋์ ๊ฐ(acc)์ ๋์ ํ ๋ฐํ
- reduce ๋ฉ์๋์ ์ฃผ์ ๋งค๊ฐ๋ณ์
- acc
- ์ด์ callback ํจ์์ ๋ฐํ ๊ฐ์ด ๋์ ๋๋ ๋ณ์
- initialValue(optional)
- ์ต์ด์ callback ํจ์ ํธ์ถ ์ acc์ ํ ๋น๋๋ ๊ฐ, default ๊ฐ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ
- acc
- (์ฐธ๊ณ ) ๋น ๋ฐฐ์ด์ ๊ฒฝ์ฐ initialValue๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด ์๋ฌ ๋ฐ์
//#array.reduce(callback(acc, element, [index[, array]])[, initialValue])
array.reduce((acc,element,index,array) => {
//do something
}, initialValue)
const test = [1,2,3]
const res = test.reduce((acc,cur) => {
return acc+cur
},0) //๋ง์ง๋ง ๋งค๊ฐ๋ณ์๊ฐ ์์๊ฐ?
res //6
|find
- ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฝ๋ฐฑ ํจ์๋ฅผ ํ ๋ฒ์ฉ ์คํ
- ์ฝ๋ฐฑ ํจ์์ ๋ฐํ ๊ฐ์ด ์ฐธ์ด๋ฉด, ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๋ฐํ
- ์ฐพ๋ ๊ฐ์ด ๋ฐฐ์ด์ ์์ผ๋ฉด undefined ๋ฐํ
//#array.find(callback(element[, index[, array]]))
array.find((element, index, array)) {
// do something
}
const avengers = [
{name: 'Tony Stark', age: 45},
{name: 'Steve Rogers', age: 32},
{name: 'Thor', age: 40},
}
const result = avengers.find((avengers) => {
return avenvers.name === 'Tony Stark'
})
console.log(result) // {name: 'Tony Stark', age:45}
|some
- ๋ฐฐ์ด์ ์์ ์ค ํ๋๋ผ๋ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ํต๊ณผํ๋ฉด ์ฐธ์ ๋ฐํ
- ๋ชจ๋ ์์๊ฐ ํต๊ณผํ์ง ๋ชปํ๋ฉด ๊ฑฐ์ง ๋ฐํ
- (์ฐธ๊ณ ) ๋น ๋ฐฐ์ด์ ํญ์ ๊ฑฐ์ง ๋ฐํ
//#array.some(callback(element[, index[, array]]))
array.some((element,index,array) => {
//do something
})
const numbers = [1,3,5,7,9]
const hasEvenNumber = numbers.some((num) => {
return num % 2 ===0
})
console.log(hasEvenNumber) //false
const hasOddNumber = numbers.some((num) => {
return num %2
})
console.log(hasOddNumber) //true
|every
- ๋ฐฐ์ด์ ๋ชจ๋ ์์๊ฐ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ํต๊ณผํ๋ฉด ์ฐธ์ ๋ฐํ
- ํ๋์ ์์๋ผ๋ ํต๊ณผํ์ง ๋ชปํ๋ฉด ๊ฑฐ์ง ๋ฐํ
- (์ฐธ๊ณ ) ๋น ๋ฐฐ์ด์ ํญ์ ์ฐธ ๋ฐํ
//# array.every(callback(element[, index[, array]]))
array.every((element,index,array) => {
//do something
})
const numbers = [2,4,6,8,10]
const isEveryNumberEven = numbers.every((num) => {
return num % 2 ===0
})
console.log(isEveryNumberEven) //true
const isEveryNumberOdd = numbers.every((num) => {
return num %2
})
console.log(isEveryNumberOdd) //false
|๋ฐฐ์ด ์ํ ๋ฐฉ๋ฒ ๋น๊ต
const chars = ['A', 'B', 'C', 'D']
// for loop
for (let idx = 0; idx < chars.length; idx++) {
console.log(idx, chars[idx])
}
// for ... of
for (const char of chars) {
console.log(char)
}
// forEach
chars.forEach((char, idx) => {
console.log(idx, char)
})
chars.forEach(char => {
console.log(char)
})
๋ฐฉ์ | ํน์ง | ๋น๊ณ |
for loop | -๋ชจ๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์ง์ -์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ๋ฐฐ์ด์ ์์์ ์ ๊ทผ -break, continue ์ฌ์ฉ ๊ฐ๋ฅ |
|
for...of | -์ผ๋ถ ์ค๋๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์ง์ X -์ธ๋ฑ์ค ์์ด ๋ฐฐ์ด์ ์์์ ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ -break, continue ์ฌ์ฉ ๊ฐ๋ฅ |
|
forEach | -๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ์ง์ -break, continue ์ฌ์ฉ ๋ถ๊ฐ๋ฅ |
Airbnb Style Guide ๊ถ์ฅ๋ฐฉ์ |
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript - this (0) | 2022.05.02 |
---|---|
JavaScript - ๊ฐ์ฒด(Objects) (0) | 2022.04.27 |
JavaScript - ๋ฌธ์์ด(String) (0) | 2022.04.26 |
JavaScript - ํจ์(function) (0) | 2022.04.26 |
JavaScript - ์กฐ๊ฑด๋ฌธ (0) | 2022.04.26 |
๋๊ธ