잘 아는 줄 알았는데 사용하다보면 까먹거나 헷갈리는 부분들이 있었다.
자바스크립트에서 배열을 다룰 때 주로 사용하는 함수들에 대해서 정리해보자.
map
배열.map((요소, 인덱스, 배열) => { return 요소 });
여기서 주의할 점은 해당 배열의 length만큼 똑같이 리턴한다는 것이다. (가끔 이 부분을 깜빡했었음..ㅠ)
1 | [1,2,3, -10].map(v => { |
forEach
배열.map((요소, 인덱스, 배열) => { });
기존에 for문이라고 생각하면 된다. 루프를 돌면 따로 리턴하는 값은 없다.
기존에 for문과 차이점이라면 중간에 break
를 사용하여 나올 수 없다.1
[1,2,3].forEach(v => console.log(v)); // 1,2,3
some, every
some
은 return true가 되는 순간 루프문을 나오게 된다.
주로 해당 조건에서 어떠한 작업을 할 때 사용된다. 반환되는 값은 true
이다.1
2
3
4
5
6
7
8let a = [];
[1,2,3].some(v => {
console.log(v) // 1, 2 까지만 찍힌다.
if (v === 2) {
a.push(2)
return true;
}
})
every
는 모든 배열을 다 순회한다.
모든 요소가 true로 떨어지면 treu리턴, 하나라도 false로 떨어지면 false를 리턴한다.1
2
3
4
5
6
7
8
9// false 리턴
[1,2,3].every(v => {
return v < 2;
})
// true 리턴
[1,2,3].every(v => {
return v < 4;
})
reduce
배열.reduce((누적값, 현잿값, 인덱스, 요소) => { return 결과 }, 초깃값);
초깃값을 적어주지 않으면 자동으로 0번째 인덱스의 값이 된다.
이 함수는 주로 코딩 테스트 문제를 준비하면서 접하게 되었다.
그 뒤로 자주 사용하고 있다. 매우 유용한 함수이다.
주로 덧셈을 할 때 자주 사용하고, 누적값을 활용해서 다양하게 이용 가능하다.
항상 return을 해줘야한다!!
1 | [1,2,3].reduce((acc, cur) => { |
1 | // 각 gender별로 몇명이 있는지 확인하고 싶을 때 |
filter
조건이 true가 되는 요소를 리턴해 새로운 배열을 만든다.
즉 기존 배열에 있는 length와 일치하지 않을 수 있다. (이 부분이 중간중간 헷갈렸던 부분…)
1 | const data = [1, 2, 3, 4, 5]; |
find, findIndex
배열의 특정 요소를 탐색하고 싶을 때는 indexOf
를 주로 사용하나 배열의 요소가 객체로 되어 있는 경우에 find, findIndex
를 사용한다.find
는 조건에 맞는 객체 자체를 반환해주며findIndex
는 조건에 맞는 index의 값을 반환해준다.
1 | var commentList = [ |