04-1. 배열

배열은 여러 자료를 묶어서 활용할 수 있는 특수한 자료이며 배열 내부에 들어가 있는 값을 요소라고 한다. 이때 요소의 순서는 인덱스라 한다. 배열의 자료형은 typeof 연산자로 확인 시 객체이며 배열인지 구분하려면 Array.is Array() 메서드를 활용하여 구분한다.

const array = [273, 'String', true, function(){}, {}, [293,195]]
array[0] //273
  1. 배열의 길이

배열.length 를 사용하여 배열 내부의 요소 개수를 확인한다.

array.length //6
array[array.length-1] //[293,195]
  1. 배열 요소 추가

배열.push() 를 사용하여 배열 뒷부분에 요소를 추가한다. 인덱스를 이용하여 요소를 강제로 추가할 수도 있다.

배열.splice(인덱스, 0, 요소) 를 사용하여 특정 위치에 요소를 추가한다.

array.push('')
array[10]=5 
array.splice(0, 0, 3)
> [3, 273, 'String', true, function(){}, {}, [293,195],'', null, null, null, null, 5]
  1. 배열 요소 제거

배열 요소를 제거하는 방법은 두가지로 하나는 splice() 를 사용하여 제거하는 방법이 있다. 배열.splice(인덱스, 제거할 요소의 개수) 는 일부를 제거하거나 요소를 중간에 넣을 때 사용된다. 제거된 요소는 배열로 리턴된다.

값으로 요소를 제거할 때는 배열 특정 값의 위치를 찾는 배열.indexOf(요소) 메서드를 사용하여 값의 위치를 추출한 후 splice()로 제거한다. 만약 배열 내부에 요소가 있을 경우 인덱스를 리턴하며 없을 경우 -1을 리턴한다.

특정 값을 가진 요소를 모두 제거하고 싶을 때는 배열.filter() 를 사용하여 제거한다.

const itemsA = ['사과', '바나나', '배']
itemsA.splice(2,1)
> ["배"] //제거된 요소는 배열로 리턴된다
itemsA
>['사과', '바나나']

const index = itemsA.indexOf('사과')
>0
itemsA.splice(index,1)
>["사과"]
itemsA
>["바나나"]
items.AindexOf('사과')
>-1

const itemsB = ['1','1','2','0']
itemsB.filter((item) => !== '1')
>['2','0']

<aside> 💡

자료의 비파괴와 파괴

const a = '안녕'
const b = '하세요'
const c = a+b

a+b를 하더라도 각각의 변수가 변경되지 않으니 비파괴적 처리에 해당한다. 원본을 보존할 수 있다는 장점이 있다.

const array=["사과","바나나"]
array.push("배")

array의 내용이 변경되었으니 파괴적 처리에 해당한다. 파괴적 처리는 메모리를 절약할 수 있으나 원본이 사라지기에 위험할 수 있다.

</aside>

04-2. 반복문

반복문 중 배열과 함께 사용할 수 있는 반복문은 for in 반복문이다. for in 반복문은 배열 요소를 하나하나 꺼내서 특정 문장을 실행할 때 사용한다. 반복변수에는 요소의 인덱스들이 들어오며 이를 통해 배열의 요소에 접근할 수 있다.

for (const 반복 변수 in 배열 또는 객체){
	문장
}

for in반복문과 다르게 반복변수에 요소의 값이 들어가는 for문으로 for of 반복문이라 한다.