배열 : 데이터의 집합
인덱스로 데이터에 접근할 수 있다.
//배열 생성
//요소,원소(element) : 1,2,4 (배열의 각 값)
var myArr = [1,2,4];
//출력
myArr
인덱스로 접근할 수 있는 자료형
1. 배열 myArr[1]
2. 문자열 'hello'[2]
[]
) [1,2,3,][0] === 1
)pop()
myArr.pop();
pop : 배열에서 마지막 요소를 제거하고 그 요소를 반환하는 역할
var pop_val = myArr.pop();
마지막 요소를 따로 빼서 저장^0^/올
빈배열에 pop하면??
undefined 반환~
push()
myArr.push();
push() : 배열의 마지막 요소로 인자로 전달한 값을 추가하고 새로운 배열의 길이를 반환하는 역할
quiz) 철수가 심부름을 받았습니다! 어머니께서 마늘, 양파, 배추를 사오라고 하는군요. 집에 왔더니 오늘 필요한 재료는 배추라고 합니다! 어머니에게 배추를 주세요!
기존의 요소를 삭제하거나 교체하거나 새로운 요소를 추가할 수 있는,
배열을 마음대로 바꿀 수 있는 매소드!
인덱스, 딜리트카운트, 아이템 순서로 인자를 전달한다.(인자 다 안써도 작동함)
splice(어떤인덱스에서시작해서, 몇개를뽑아삭제, 추가할아이템);
myArr.splice();
- 삭제 - (인덱스, 개수) 인덱스부터 개수만큼 삭제
- 추가 - (인덱스 , 0 , ‘추가할 요소') 인덱스 자리에 추가
- 교체 - (인덱스, 개수, ‘추가할 요소’) 인덱스 자리에 개수만큼 빼고 추가할 요소 넣기
마이너스도 가능할까?
카운트는 마이너스 지원안함!
인덱스 젤 뒤부터 -1, -2 ...
quiz)
var fish = ['정어리', '고등어', '돌고래', '참치', '고래상어', '코끼리'];
// 1. splice 를 이용해 코끼리를 제거해보세요
fish.splice(-1,1);
// 2. 참치 다음에 다금바리를 추가해보세요
fish.splice(4,0,'다금바리');
// 3. 돌고래를 제거하고 옥돔과 갈치를 추가해보세요
fish.splice(2,1,'옥돔','갈치');
splice(1)
만하면 1인덱스부터 쫙 다 사라짐 ㅠ
splice(-1)
만하면 젤 끝 인덱스라 걔만 지워지는거!
slice(여기인덱스부터, 여기하나전인덱스까지);
slice() : 두 개의 인자를 전달하여 배열안에 있는 요소를 새로운 배열로 반환
원본 요소가 바뀌지 않는것이 포인트!
특히 두 번째 인자에 해당하는 인덱스의 아이템은 포함하지 않는다.
quiz)
var fish = ['정어리', '고등어', '돌고래', '참치', '고래상어', '코끼리'];
// 다음 배열에서 물고기가 아닌것을 slice로 선택해 콘솔로 출력해 보세요.
console.log(fish.slice(2,3)); //돌고래
console.log(fish.slice(5)); //코끼리 (fish.slice(-1);도 됨)
배열 정렬하기
왜 숫자는 sort가 안될까..
문자열로 바꾼 후, 유니코드 순서대로 해서 그래..
아니.. JS는 바보라그래..
해결방법은?
숫자형 데이터 정렬의 단점을 해결하기 위해 비교 함수(compareFunction)를 사용!!
sort안에 쓰이는 함수를 비교함수라고 한다.
반환값에 따라서 배열이 정렬이 되기 때문에 실행이 되는 것!!
a,b를 비교하는데
01 12 23 34인덱스끼리 비교하게 된다.
return값이 음수가 나오면, a가 정렬에서 앞에 위치하고, b가 그 다음에 오게 된다.
양수면, b가 앞으로!
var arrNum = [9, 3, 44, 14, 21];
[3, 9, 44, 14, 21]
[3, 9, 44, 14, 21]
[3, 9, 14, 44, 21]
[3, 9, 14, 21, 44]
var arrNum = [9,3,44,13,21];
3-9 < 0, a인 9가 앞에 배치
44-3 > 0, b인 44가 앞에 배치 [9, 44, 3]
다시 9,44비교
....
반복
내림차순 정리
var arrNum2 = [13, 9, 10, 2]; // 내림차순으로 정렬할 경우 (b - a) // 9 - 13 == -4 --> 음수임으로 a인 13을 앞으로 // 10 - 9 == 1 --> 양수임으로 b인 10을 앞으로 [13, 10, 9, 2] // 10 - 13 == -2 --> 음수임으로 a인 13을 앞으로 // 2 - 9 == -7 --> 음수임으로 a인 9를 앞으로 [13, 10, 9, 2]
quiz)
// 다음 배열에서 sort 함수를 이용해 원소의 product의 값을 기준으로 가나다순으로 정렬해보세요.
var studentList = [
{
id: 1, product: '연필', stock: 10
},
{
id: 2, product: '색종이', stock: 33
},
{
id: 3, product: '체육복', stock: 2
},
{
id: 4, product: '만연필', stock: 0
}
]
내림차순
맨 앞에서 요소를 추가할때!
const cafe = ['coffee', 'cake', 'tea', 'cookie']
const count = cafe.unshift('bread');
맨 앞에서 요소를 지울때!
배열 앞에서 추가, 삭제 - unshift, shift
배열 뒤에서 추가, 삭제 - push, pop
.indexOf(탐색하고자하는요소, 탐색을시작하고자하는 인덱스)
- find
: find() 메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환- findIndex
: findIndex() 메서드는 주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환- filter
: 만족하는 모든 조건 반환!
각각 요소의 함수를 호출하는 메서드
뽑아서 배열을 만든다.
find(), filter(), map() 차이점 알기!
map 배열 반환
forEach는 순회만 한다.