일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- react
- React 테스트코드
- Testing-library/react
- ScrollView 무한 스크롤
- 첫코딩
- React Testing Library
- nest.js 순환 참조
- JavaScript
- mock api 사용법
- CSS
- 프로젝트 배포하기
- 리액트 테스트 코드
- FlatList 무한 스크롤
- nest.js circular Dependency
- 첫 코딩
- react jest
- javascript 테스트
- jest
- 비동기 테스트
- nest.js forwardRef
- nest.js 순환 종속성
- 리액트 테스트
- TDD방식으로 리액트 테스팅
- HTML
- TodoList 테스트 코드
- react testing library 비동기 테스트 사용법
- mock api를 이용한 react 테스트
- react 테스트
- react native 무한스크롤
- 개발
- Today
- Total
성장을 위한 기록
중급 기본 정리 (with 앙마코딩) 배열 매서드 Array 1탄 본문
이 글은 인프런에서 앙마코딩님의 무료 강좌를 학습한 내용입니다. (자바스크립트 중급 강좌)
문제 시 바로 삭제하겠습니다.
출처 [무료] 자바스크립트 중급 강좌 대시보드 - 인프런 | 강의 (inflearn.com)
배열 매소드
기본적인 배열 매소드
push() , pop(), unshift(), shift()
순서대로 뒤에 삽입, 뒤에 삭제, 앞에 삽입, 앞에 삭제이다.
splice(n, m) : 특정 요소 지움
n번째 요소부터 m개를 지울 때 사용한다. (당연히 번호는 인덱스 번호이다.)
let arr = [1,2,3,4,5];
arr.splice(1,3);
/* [1,5]*/
let arr1 = [1,2,3,4,5];
arr1.splice(1,3,6,7);
/* [1,6,7,5]*/
splice(n,m,x) 예시에서 보듯 그 뒤에 입력하는 인수는 배열에 삽입된다. (지운 자리 즉 삭제하기 전 n번째 요소 앞에 삽입된다.)
이를 이용하면 삭제 없이 원하는 위치에 요소를 추가 할 수 있다.arr.splice(1,0, x)
이렇게 m의 인수를 0으로 삽입할 경우 지울 요소은 없고 그 자리에 새로운 요소만 추가된다.
그렇다면 splice
값은 무엇일까?splice
값은 삭제된 요소를 반환한다. 위 예제를 들어보면 arr.splice(1,3)
의 값은 [2,3,4]
를 반환한다.
slice(n,m) : n부터 m까지 반환
문자열 매소드와 동일하게 n부터 m까지(m은 포함하지 않고 그 앞까지 반환한다.
인수를 입력하지 않으면 배열을 그대로 복사하게 된다.
let arr = [1,2,3,4,5];
arr.slice(1,4);
/*[2,3,4]*/
concat(arr1, arr2 ....) : 합쳐 새로운 배열 반환
기존 배열에 인수로 들어간 배열을 합쳐 반환한다.(순서대로 뒤로 붙는다.)
또한 배열이 아니더라도 배열 안에 삽입된다.
let arr = [1,2];
arr.concat([3,4]); // [1,2,3,4]
arr.concat([3,4],[5,6]); // [1,2,3,4,5,6]
arr.concat([3,4],5,6); // [1,2,3,4,5,6]
forEach(fn) : 배열 반복
let users = ['Tom' ,'jerry', 'Btae'];
users.forEach((item, index, arr) => {
/*.....*/
});
forEach
는 매개변수를 함수로 받는다 예시는 화살표 함수를 사용하여 표기했다.
함수 매개변수로 item은 배열에 요소를 가르키고, index는 인덱스, arr는 users라는 배열 자체를 가르킨다. 보통 arr 매개변수는 잘 사용하지 않는다.
let users = ['Tom' ,'jerry', 'Btae'];
users.forEach((name, index) => {
console.log(`${index + 1}. ${name}`);
});
/*
1. Tome
2. jerry
3. Btae
*/
위 예시처럼 배열에 인수마다 반복하여 총 3번 실행된 결과이다.
이 매서드는 노드리스트 즉 클래스 명을 가지고 왔을 때 사용 할 수도 있다.
indexOf(), lastIndexOf()
문자열과 동일하게 작동한다.
indexOf()
는 앞에서부터 lastIndexOf()
는 뒤에서부터 해당 인수를 배열에서 찾는다.
let arr = [1,2,3,4,1,2,3];
arr.indexOf(3); // 2
arr.indexOf(2,2); // 5
arr.lastIndexOf(3); //6
주의할 점은 배열과 마찬가지로 찾는 인수를 처음 만난 인덱스를 반환하고 그 이후는 찾지 않는다는 점이다.
예시에서 볼 수 있듯이, 3을 찾을 때는 앞에 인덱스 2번만 찾는다. 그 다음 수를 찾고 싶다면 쉼표(,)로 구분하여 다시 작성하게 되면 첫 번째 인수를 넘기고 다음 인덱스 번호를 반환한다.
만약 뒤에서부터 찾고 싶다면 lastIndexOf()
를 사용하면 된다.
includes() : 포함하는지 확인
indexOf()
처럼 해당 인수의 인덱스를 확인할 필요 없이 단순히 포함하는지만 확인할 때 사용한다.
포함한다면 true, 없다면 false를 반환한다.
find(fn), findIndex(fn)
indexOf()
와 동일하게 인수를 찾지만, 함수를 인수로 넣어 보다 복잡한 조건을 부여할 수 있다. (예를 들면 짝수만 찾기)
특히 객체 배열에 경우 indexOf()
활용이 어려움으로 많이 사용된다.
이것도 마찬가지로 첫 번째 값만 반환하고 뒤에는 실행하지 않는다. 만약 반환될 것이 없다면 undefined를 반환한다.find
는 해당 배열 요소를 findIndex
는 요소의 인덱스를 반환한다.
let arr = [1,2,3,4,1,2,3];
const result = arr.find((num) => {
return num % 2 === 0
}) // 2
/* 짝수인 첫번째 2를 반환 findIndex를 사용하면 인덱스 번호 1을 반환*/
const list = [
{ age: 30},
{ age: 20 },
{ age:10 },
];
const result1 = list.find((user) => {
if(user.age < 19){
return true;
}
return false;
});
console.log(result1); // { age : 10 }
/* findIndex를 사용하면 인덱스 번호 2를 반환*/
filter(fn) : 만족하는 모든 요소를 배열로 반환
앞선 매서드는 만족하는 처음 요소만 반환하고 중지했다. fillter
매서드는 해당 배열에 모든 요소를 계산하고 모든 값을 배열의 형태로 반환한다.
let arr = [1,2,3,4,1,2,3];
const result = arr.filter((num) => {
return num % 2 === 0
}) // [2,4,2]
/* 짝수인 모든 요소를 반환*/
reverse() : 역순으로 재정렬
기존 배열을 역순으로 재정렬하여 반환한다. 이는 게시판에서 마지막 글을 먼저 보여주거나 최근에 가입한 사람을 보여줄 때 주로 사용한다.
let arr = [1,2,3,4];
arr.reverse(); // [4,3,2,1]
map(fn) : 특정 기능을 시행하고 새로운 배열 반환
let list = [
{ name : 'Tom', age: 30},
{ name : 'Jerry', age: 17},
{ name : 'Btae', age: 27},
];
let newList = list.map((user, index) => {
return Object.assign({}, user, {
id : index + 1,
isAdult: user.age > 19,
});
});
/* newList > [ {name: 'Tom', age: 30, id: 1, isAdult: true}
{name: 'Jerry', age: 17, id: 2, isAdult: flase}
{name: 'Btae', age: 27, id: 3, isAdult: true}]
*/
위 예제는 assign()
객체 메서드를 이용해서 각 객체에 프로퍼티를 추가하고 그 객체를 배열의 형태로 반환하는 과정이다.
기존에 있는 list 배열은 변하지 않는다.
join() split() : 배열을 문자열로, 문자열을 배열로 변환
let arr = ['안녕', '나는', 'Btae'];
arr.join(); // > '안녕, 나는, Btae'
arr.join(' '); // > '안녕 나는 Btae'
let str = '안녕,나는,Btae';
str.split(","); // > ['안녕','나는','Btae']
str.split(""); // > ['안','녕',',','나','는','B','t','a','e']
위 예시를 살펴보면 join()
매서드는 배열을 문자열로 변환한다. 인수를 입력하지 않으면 쉼표(,)로 구분하고 인수를 입력하게 되면 요소 사이에 해당 인수를 집어넣어 문자열로 반환한다.
split()
은 반대로 문자열을 배열로 반환한다. 해당 인수를 기준으로 나눠 요소를 구분짓고, 인수를 입력하지 않을 경우 한 글자 씩 배열로 반환한다.
Array.isArray() : 배열인지 아닌지 찾기
문자열, 숫자열 등 구분을 지을 때 배열은 객체형 즉 Object에 속한다. 따라서 typeof
를 사용해도 배열, 객체 모두 Object가 반환된다.
따라서 배열을 구분하기 위해서는 Array.isArray()
메서드를 사용해야 한다.
객체일 경우 false가 반환되고, 배열이라면 true로 반환된다.
'FE (Front End) (구) > javascript' 카테고리의 다른 글
중급 기본 정리 (with 앙마코딩) 구조 분해 할당 (0) | 2022.03.15 |
---|---|
중급 기본 정리 (with 앙마코딩) 배열 매서드 Array 2탄 (0) | 2022.03.15 |
중급 기본 정리 (with 앙마코딩) 문자열 매소드 (0) | 2022.03.12 |
js 중급 기본 정리 (with 앙마코딩) 숫자 매서드 Number, Math (0) | 2022.03.11 |
js 중급 기본 정리 (with 앙마코딩) 생성자 함수(new) 객체 메서드, 계산된 프로퍼티, 심볼 Symbol (0) | 2022.03.10 |