본문 바로가기
  • 살짝 구운 김 유나
Web/JavaScript

JavaScript 기초 - Array

by yunae 2022. 10. 19.

Array

: 키와 속성들을 담고 있는 참조 타입의 객체

  • 순서를 보장
  • 주로 대괄호를 이용하여 생성, 0을 포함한 양의 정수 인덱스로 특정 값에 접근 가능
  • array.length의 형태로 배열의 길이에 접근

 

배열 메서드 기초

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
메서드 설명 비고
reverse 원본 배열의 요소들의 순서를 반대로 정렬  
push & pop 배열의 가장 뒤에 요소를 추가 또는 제거  
unshift & shift 배열의 가장 앞에 요소를 추가 또는 제거  
includes 배열에 특정 값이 존재하는지 판별 후 참/거짓 반환  
indexOf 배열에 특정 값이 존재하는지 판별 후 인덱스 반환 요소가 없을 경우 -1 반환
join 배열의 모든 요소를 구분자를 이용하여 연결 구분자 생략 시 쉼표 기준
numbers.reverse()     
console.log(numbers)  // [ 5, 4, 3, 2, 1 ]

numbers.push(100)
console.log(numbers)  // [ 5, 4, 3, 2, 1, 100 ]

numbers.pop()
console.log(numbers)  // [ 5, 4, 3, 2, 1 ]

console.log(numbers.includes(3))    // true
console.log(numbers.includes(100))  // false

console.log(numbers.indexOf(4))     // 1
console.log(numbers.indexOf(100))   // -1

console.log(numbers.join())         // 5,4,3,2,1
console.log(numbers.join(' '))      // 5 4 3 2 1

 

 

 

 

배열 메서드 심화

 

Array helper Methods

: 배열을 순회하며 특정 로직을 수행하는 메서드

- 메서드 호출 시 인자로 callback 함수를 받는 것이 특징

 

* callback 함수 : 어떤 함수의 내부에서 실행될 목적으로 인자로 넘겨받는 함수

메서드 설명 비고
forEach 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행 반환 값 없음
map 콜백 함수의 반환 값을 요소로 하는 새로운 배열 반환  
filter 콜백 함수의 반환 값이 참인 요소들만 모아서 새로운 배열을 반환  
reduce 콜백 함수의 반환 값들을 하나의 값에 누적 후 반환  
find 콜백 함수의 반환 값이 참이면 해당 요소를 반환  
some 배열의 요소 중 하나라도 판별 함수를 통과하면 참을 반환  
every 배열의 모든 요소가 판별 함수를 통과하면 참을 반환  

 

 

1. forEach : 인자로 주어지는 함수를 배열의 각 요소에 대해 한 번씩 실행

array.forEach(element, index, array) => {
  // do something
}
// 1.
const colors = ['red', 'orange', 'green', 'yellow']

const printClr = function (color) {
  console.log(color)
}

colors.forEach(printClr) 

// 2. 함수 정의를 인자로 넣어보기
/* 적용될 배열.forEach()*/
colors.forEach(function (color) {
  console.log(color)
})

// 3. 화살표 함수 적용하기
colors.forEach((color) => {
  console.log(color)
})

 

 

 

2. map : 콜백 함수의 반환 값을 요소로 하는 새로운 배열 반환

  • 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
  • 기존 배열 전체를 다른 형태로 바꿀 때 사용
const numbers = [1, 2, 3, 4, 5]

// 1.
const double = function (number) {
  return number * 2
}

const doubleNumbers = numbers.map(double)
console.log(doubleNumbers)      // [ 2, 4, 6, 8, 10 ]

// 2.
const doubleNumbers = numbers.map(function (number) {
    return number * 2
})
console.log(doubleNumbers)      // [ 2, 4, 6, 8, 10 ]

// 3.
const doubleNumbers = numbers.map((number) => number * 2)
console.log(doubleNumbers)      // [ 2, 4, 6, 8, 10 ]

 

 

 

3. filter : 콜백 함수의 반환 값이 참인 요소들만 모아서 새로운 배열 반환

  • 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행
  • 기존 배열의 요소들을 필터링할 때 유용
const products = [
  { name : 'cucumber', type : 'vegetable'},
  { name : 'apple', type : 'fruit'},
  { name : 'tomato', type : 'vegetable'},
  { name : 'cherry', type : 'fruit'},
]

// 1.
const fruitFilter = function (product) {
  return product.type === 'fruit'
}

const newArray = products.filter(fruitFilter)

console.log(newArray)   // [ { name: 'apple', type: 'fruit' }, { name: 'cherry', type: 'fruit' }]

// 2.
const newArray = products.filter(function (product) {
  return product.type === 'fruit'
})
console.log(newArray)   // [ { name: 'apple', type: 'fruit' }, { name: 'cherry', type: 'fruit' }]

// 3.
const newArray = products.filter((product) => product.type === 'fruit')
console.log(newArray)   // [ { name: 'apple', type: 'fruit' }, { name: 'cherry', type: 'fruit' }]

 

 

 

4. reduce : 인자로 주어지는 함수를 배열의 각 요소에 대해 한 번씩 실행해서, 하나의 결과 값을 반환

- 배열을 하나의 값으로 계산하는 동작이 필요할 때 사용!!

array.reduce((반환값이 누적되는 변수, element) => {
  // do something
}, 누적될 값의 초기값)
const numbers = [90, 60, 80, 100]
// 총합구하기

// 1.
const sumV = numbers.reduce(function (total, num) {
  return total + num
}, 0)

console.log(sumV)    // 330

// 2.
const sumV = numbers.reduce((total, num) => {
  return total + num
}, 0)

console.log(sumV)    // 330

// 3.
// 총합
const sumV = numbers.reduce((total, num) => total + num, 0)
// 평균
const avgV = numbers.reduce((total, num) => total + num, 0) / numbers.length   

console.log(sumV)    // 330
console.log(avgV)    // 82.5

 

 

 

5. find : 배열의 각 요소에 대해 콜백 함수를 한 번씩 실행

  • 콜백 함수의 반환 값이 참이면, 조건을 만족하는 첫번째 요소를 반환
  • 찾는 값이 배열에 없으면 undefined 반환
const heros = [
  { name : 'Superman', age : 45 },
  { name : 'Spiderman', age : 20 },
  { name : 'Batman', age : 45 },
]

const hero = heros.find((hero) => hero.name  === 'Superman')
console.log(hero)  // { name: 'Superman', age: 45 }

 

 

 

6. some : 배열의 요소 중 하나라도 주어진 판별 함수를 통과하면 참을 반환

  • 모든 요소가 통과하지 못하면 거짓 반환
  • 빈 배열은 항상 false 반환
const arr = [1, 2, 3, 4, 5]

// 1.
const result = arr.some(function (num){
  return num % 2 === 0
})

// 2.
const result = arr.some((num) => {
  return num % 2 === 0
})

// 3.
const result = arr.some((num) => num % 2 === 0)

console.log(result)   // true

 

 

 

 

7. every : 배열의 모든 요소가 주어진 판별 함수를 통과하면 참을 반환

  • 하나의 요소라도 통과하지 못하면 거짓 반환
  • 빈 배열은 항상 true 반환
const arr = [1, 2, 3, 4, 5]

const newResult = arr.every((num) => num % 2 === 0)

console.log(newResult)   // false

 

 

 

 

 

 

얼마전까지만 해도 집에 혼자 있으면 너무 우울했는데, 지금은 또 사람 대하는게 너무 피곤하게 느껴진다.

하늘사진을 보니 마음이 뚫리는,,기뷴

 

드라마 정주행 순서,, 적어놔야지

쌈마이웨이 - 커피프린스 - 멜로가 체질 - 궁 

 

'Web > JavaScript' 카테고리의 다른 글

JavaScript - 동기와 비동기  (0) 2022.10.26
JavaScript 심화 - Event  (0) 2022.10.24
JavaScript 심화 - DOM  (0) 2022.10.24
JavaScript 기초- Object  (0) 2022.10.19
JavaScript 기초  (0) 2022.10.19

댓글