[Javascript] 배열에 관한 함수 2

filter, find, include 등..


참고사이트 : MDN Javascript_Array


filter


배열에서 조건에 맞는 아이템을 골라 배열 데이터로 반환하는 함수이다.

const numbers = [0, 1, 2, 3]

위와 같은 배열이 있다고 하면

const a = numbers.filter(number => {
    return number < 3
})
console.log(a)

이렇게 사용할 수 있다.

이렇게 된다면 반환되는 결과는

[0, 1, 2]

이다.

위 코드를 조금만 더 다듬으면

const a = numbers.filter(number =>  number < 3)
console.log(a)

이렇게도 축약이 가능하다. 계속 연습하자.

find, findIndex


조건에 맞는 아이템이나 아이템의 인덱스를 반환하는 함수이다.

const fruits = ['Apple', 'Banana', 'Mango']

위와 같은 배열이 있다고 하면 아래와 같이 쓸 수 있다.

const a = fruits.find(fruit => /^A/.test(fruit))
console.log(a)

결과 : Apple

설명하면, /^A/는 정규표현식을 이용한 표현으로, ‘A’로 시작하는 아이템을 의미한다.

따라서 위 함수에서 조건으로 부여된 내용은 ‘A’로 시작하는 아이템이며, 위 배열에서 해당하는 아이템은 Apple이므로 Apple이 find를 통해서 반환된다.

마찬가지로, find 대신에 findIndex를 적용해보자.

const a = fruits.findIndex(fruit => /^A/.test(fruit))
console.log(a)

결과 : 0

조건에 맞는 아이템은 Apple이며, Apple은 0번 인덱스에 있으므로 0번이 반환된다.

조건에 맞는 아이템을 삭제하거나 그 위치에 새로운 아이템을 넣을 때 유용하다.

includes


파이썬의 in과 비슷한 함수이다.

const numbers = [0, 1, 2, 3]

console.log(numbers.includes(3))

결과 : true

배열 안에 해당 값이 들어있는지 여부를 boolean 형태로 값을 반환한다.

push, unshift


각각 파이썬의 append와 insert(0) (0번 인덱스에 삽입)에 대응된다고 생각한다.

const numbers = [0, 1, 2, 3]

numbers.push(4)
console.log(numbers)

결과 : [0, 1, 2, 3, 4]

numbers.unshift(-1)
console.log(numbers)

결과 : [-1, 0, 1, 2, 3, 4]

즉, push는 맨 뒤에, unshift는 맨 앞에 아이템을 새로 삽입하는 함수이다.
주의할 점은 원본을 수정시킨다는 점이다.

reverse

배열의 데이터를 반대로 뒤집는 함수이다.

const numbers = [0, 1, 2, 3]

numbers.reverse()

console.log(numbers)

결과 : [3, 2, 1, 0]

이 함수 역시 push와 unshift처럼 원본을 수정한다. 의도한게 아니라면 새로 변수를 선언해주자.

splice(a, b)

여기서 a와 b는 정수이다.

해석을 먼저 하자면 a번 인덱스로부터 아이템을 b개 지워라. 라는 의미이다.

const numbers = [0, 1, 2, 3, 4, 5, 6]

위와 같은 원본이 있다고 하면

numbers.splice(2, 1)

을 실행하면 위에 있던 배열은 아래와 같이 수정된다.

console.log(numbers)

결과 : [0, 1, 3, 4, 5, 6]

즉 2번 인덱스로부터 아이템을 1개 지우라고 한 것이므로, 2만 지워지고 나머지는 남는다.

이 상태에서 계속 지워보자.

numbers.splice(2, 3)

이렇게 하면 결과는

console.log(numbers)

결과 : [0, 1, 6]

2번 인덱스로부터 아이템을 3개 지운 결과이다.

만약에 지울 개수가 0이라면?


다시 말해, splice(2, 0) 이런 형식으로 적으면 어떻게 될까?

const numbers = [0, 1, 2, 3]

numbers.splice(2, 0)

결과 : [0, 1, 2, 3]

아무런 변화가 없다.

하지만 여기서 아래와 같이 세 번째 인수를 넣어서 그 자리에 아이템을 넣어줄 수 있다.

numbers.splice(2, 0, 99)

결과 : [0, 1, 99, 2, 3]

즉, 2번 인덱스에 99를 새로 추가하라는 명령을 내릴 수 있다.

아이템을 지우고 새로 아이템을 넣기


const numbers = [0, 1, 2, 3]

numbers.splice(2, 1, 99)

결과 : [0, 1, 99, 3]

2번 인덱스의 아이템을 1개를 지우고, 그 자리에 99를 넣으라는 의미로 배열의 내용을 수정해줄 수 있다.


© 2022.07. by Wookey_Kim

Powered by Hydejack v7.5.2