Learn Filter, Map & Every

Junghan Lee·2023년 3월 23일
0

Learnd in Camp

목록 보기
16/48

Index

Filter ?
map?
every?



**intro: filter, map, every 모두 배열(array)을 대상으로 적용할 수 있는 method로 요소를 조작하거나 변형하며 반복문을 이용한 것처럼 배열의 모든 요소를 순회하며 기능을 수행한다.

Array.filter()

filter는 array에 적용할 수 있는 메서드로 array의 elements 를 이름처럼 filtering하는 기능을 담고 있다. 개념은 배열의 모든 요소를 순회하면서 주어진 함수로 각 요소를 판별해 true를 반환하는 요소만으로 새로운 배열을 생성한다. filter메서드는 원래 배열을 수정하지 않으며 새로운 배열을 반환한다.

아래 예제에서 filter 메서드는 numbers배열에서 숫자 2보다 큰 요소만 골라 새로운 배열을 만들어 반환한다.

const numbers = [1, 2, 3, 4, 5];

const filteredNumbers = numbers.filter(function(number) {
  return number > 2;
});

console.log(filteredNumbers); // [3, 4, 5]

Array.map()

map 메서드는 배열의 모든 요소를 순회하며 각 요소를 주어진 함수에 따라 새로운 값으로 변환해 새로운 배열을 만든다. map 매서드 또한 filter 처럼 원래의 배열을 수정하지 않으며 새로운 배열을 반환한다.

이 예제에서 map 메서드는 numbers 배열의 각 요소를 제곱해 새로운 배열을 생성한다.

const numbers = [1, 2, 3, 4, 5];

const squaredNumbers = numbers.map(function(number) {
return number * number;
});

console.log(squaredNumbers); // [1, 4, 9, 16, 25]

Array.every()

every 메서드는 배열의 모든 요소를 순회하며, 주어진 함수가 모든 요소에 대해 true를 반환하는지 확인한다. 모든 요소가 조건을 만족할 때, true를 반환하며, 그렇지 않으면 false를 반환한다.

function solution(s) {
if(s.length === 4 || s.length === 6){
return s.split("").every((el)=> isNaN(el/1) === false)}
else { return false }
}

위의 예제는 길이가 4 혹은 6 이며 배열의 모든 요소가 문자가 섞이지 않고 숫자로 구성되어있는지 판별하는 알고리즘에 대한 솔루션인데, 먼저 string 타입인 s의 각 요소들을 split("")으로 쪼개 각각 배열에 담아둔 후 판별을 위해 every메서드를 사용한 예시이다.

split으로 문자열을 쪼개 담은 배열의 모든 요소에 대해 순회하며 각 요소를 1로 나눈 것(Number이면 Number가 되고 String type이면 오류가 발생할 것임)을 isNaN(숫자인지 아닌지 판별하는 메서드)을 통해 판단해 모든 요소가 숫자라면 true를 반환하게 한다.

profile
Strive for greatness

0개의 댓글

관련 채용 정보