배열(Array) 함수
javascript를 포함한 여러 언어 부분에서 배열은 필수적으로 사용된다. 이때 사용하면 유용한 함수들이 있으니 꼭 익혀 두자.
- push() : 배열에 요소를 추가
- shift() : 배열에 맨 처음 요소 제거
- pop() : 배열의 맨 뒤 요소 제거
- indexOf() : 지정된 요소가 배열에서 처음으로 나타나는 위치를 반환
- find() : 지정된 함수가 반환하는 첫번째 요소 값을 반환
- findIndex() : 지정된 함수가 true인 첫번째 요소의 인덱스를 반환
- filter() : 배열 내의 원하는 요소가 포함되어있는 요소를 검색
- map() : 배열에 있는 값 중 조건에 만족하는 인덱스를 true로 반환. 나머지는 false
- forEach() : 배열을 반복시켜 작업해야할 경우 사용
- join() : 배열을 문자열로 변경할 때 사용. 배열에 들어갈 값들을 무엇으로 구분할지 매개변수로 입력받아 전달
- split() : 나누는 기준을 매개변수로 전달하여 문자열을 배열로 변경
- sort(), reverse() : sort()는 배열의 순서를 오름차순 정렬해주고 reverse()는 배열의 내용을 거꾸로 출력. sort는 앞자리 1자리만 인식하여 정렬하기 때문에 두자리 수 부턴 함수를 사용해야함
- Array.of() : 전달된 인자를 요소로 가지는 배열을 만들어줌. 배열을 생성할 때 사용하는 메소드
- concat() : 배열에 push, pop 등을 사용하면 배열의 원본에 요소가 더해지거나 빠지는데 concat을 사용하면 원본 배열은 그대로 있고 새로운 배열을 반환
- includes() : 배열에 요소가 있는지 확인하고 있으면 true, 없으면 false를 반환
- fill() : 전달 받은 값으로 배열을 채움. 배열의 개수는 유지하되 값을 초기화할때 사용
- flat() : 중첩배열을 평면화
- splice() : 배열의 중간 요소를 제거하거나 추가
push()
let fruit = ["사과", "복숭아", "배", "감"];
fruit.push("딸기");
console.log(fruit);
shift()
const arr3 = [1, 2, 3, 4, 5];
// 배열의 첫번째 요소 제거 (원본 수정)
arr3.shift();
console.log(arr3);
pop()
fruit.pop();
fruit.pop();
console.log(fruit);
indexOf()
let pp = ["이몽룡", "이춘향", "홍길동", "사또"];
# pp 배열 0번 인덱스의 요소 출력
console.log("indexOf 1번째 출력값 : ", pp[0]);
# "사또"가 몇번 인덱스에 있는지 출력
console.log("indexOf 2번째 출력값 : ", pp.indexOf("사또"));
# pp 배열에 "오또"가 없으니 -1 출력
console.log("indexOf 3번째 출력값 : ", pp.indexOf("오또"));
find()
let cont = ["한국", "미국", "중국", "일본"];
# cont 배열내의 "한국"이 있는지 찾기
let tfind = cont.find(function (i) {
# 배열 내에 "한국"이 있으면 값을 return
return i == "한국"; # true가 되면 값을 반환
});
let ress = cont.find((num) => num === "일본");
# 찾는 값이 없으면 undefined 출력
console.log(tfind);
console.log(ress);
findIndex()
let verg = ["가지", "상추", "깻잎", "양파"];
# 인덱스 요소 중 "가지"가 몇번째 있는 인덱스인지 출력
let vergfi = verg.findIndex(function (i) {
return i == "가지";
});
# 인덱스 요소 중 "상추" 가 몇번째 있는 인덱스인지 출력
let vergfi2 = verg.findIndex((i) => i === "상추");
console.log(vergfi);
console.log(vergfi2);
filter()
let nfruit = ["1사과5", "2복숭아6", "3배7", "4감8"];
let numbers = [1, 2, 3, 4, 5];
let nff = nfruit.filter(function (i) {
return i[0] == "2";
});
let nff2 = nfruit.filter((ff) => ff[0] == "1");
let nff3 = nfruit.filter((ff) => ff.length > 3);
let nfn = numbers.filter(function (num) {
return num > 2;
});
let nfn2 = numbers.filter((num) => num > 1);
console.log(nff);
console.log(nff2);
console.log(nff3);
console.log(nfn);
console.log(nfn2);
map()
# nfruit 배열의 2번째 인덱스를 true로 반환
let testmap = nfruit.map(function (i) {
console.log(i);
return i[0] == "2";
});
# nfruit 배열의 1번째 인덱스를 true로 반환
let testmap2 = nfruit.map((i) => i[0] == "1");
# 출력값 : [false, true, false, false]
console.log(testmap);
# 출력값 : [true, false, false, false]
console.log(testmap2);
forEach()
let fortest = [1, 2, 3, 4, 5];
for (let ftest = 0; ftest < fortest.length; ftest++) {
console.log(ftest + " 인덱스의 값 : " + fortest[ftest]);
}
let tt = 0;
fortest.forEach(function (i) {
console.log(`${tt++}` + " 인덱스의 값 : " + i);
});
join()
let coffee = ["아", "메", "리", "카", "노"];
console.log(coffee.join("."));
split()
let splittest = "띄 엄 띄 엄 띄 엄 띄 엄";
console.log(splittest.split(" "));
sort() 와 reverse()
let nnum = [6, 4, 3, 2, 5, 7, 8, 5];
console.log(nnum.sort());
console.log(nnum.reverse());
Array.of()
const arr = Array.of(1, 2, 3, 4, 5, 6);
console.log(arr);
concat()
const arr = Array.of(1, 2, 3, 4, 5, 6);
console.log(arr);
// 배열 원본을 수정하는 메소드
arr.push(2);
console.log(arr);
// 배열 원본이 수정되지 않고 새로운 배열을 반환
const result = arr.concat(5);
console.log(result);
console.log(arr);
// 배열 2개를 합쳐서 하나로 만들기
const arr4 = [1, 2];
const arr5 = [3, 4];
const arr6 = arr4.concat(arr5);
console.log(arr6);
includes()
const foods = ["apple", "banana", "orange"];
// includes : ES7에 도입. 배열에 요소가 있는지 확인해서 boolean 타입으로 반환
if (!foods.includes("banana")) {
foods.push("banana");
}
console.log(foods);
fill()
const arr = [1, 2, 3, 4, 5];
console.log(arr.fill(1));
flat()
// flat 메소드 : 배열의 뎁스를 1뎁스씩 올려줌
const arr13 = [1, 2, 3, 4, 5, [6, 7]];
console.log(arr13.flat());
const arr14 = [1, 2, , [3, 4, 5, [6, 7]]];
console.log(arr14.flat());
console.log(arr14.flat(2));
const arr15 = [[[[[[[[[[[1]]]]]]]]]]];
console.log(arr15.flat(Infinity));
splice()
// 배열의 1,2번 인덱스 제거
const arr = [1, 2, 3, 4, 5];
const res = arr.splice(1, 2);
console.log(arr);
console.log(res);
// splice
const arr = [1, 2, 3, 4];
// 1, 2번 인덱스를 제거하고 20과 30을 추가
const res = arr.splice(1, 2, 20, 30);
console.log(arr);
// 제거된 요소 반환
console.log(res);
배열 함수를 이용한 로또 번호 생성기 만들기
// 로또 당첨 번호를 저장 할 공간
let lotto = [];
// 전체번호를 담을 배열 생성
let setnum = [];
function createnum() {
// setnum 배열에 1 ~ 45 까지 번호를 채움
for (let i = 1; i < 46; i++) {
setnum.push(i);
}
}
function createlotto() {
// 랜덤한 수 생성 하여 당첨 번호 생성
for (let x = 1; x < 6; x++) {
setnum = [];
createnum();
for (let j = 1; j <= 6; j++) {
// 1부터 46까지 숫자를 랜덤으로 생성
let rannum = Math.floor(Math.random() * setnum.length);
// 생성된 숫자를 lotto배열에 추가
lotto.push(setnum[rannum]);
// lotto 배열에 넣은 숫자 제거
setnum.splice(rannum, 1);
}
// 로또 번호 오름차순 정렬
lotto.sort(function (a, b) {
return a - b;
});
// 배열을 문자열로 변환
console.log("로또 번호 : " + lotto.join(", "));
// 배열 초기화
lotto = [];
}
}
// 함수 실행
createlotto();
728x90
'JavaScript' 카테고리의 다른 글
[Javascript] 생성자 함수와 자주쓰는 DOM, BOM 메소드 (0) | 2023.03.21 |
---|---|
[Javascript] callback 함수를 활용한 일반 함수와 화살표 함수 사용 및 this의 차이점 알아보기 (0) | 2023.03.16 |
[Javascript] 함수를 활용한 묵찌빠 게임 만들기 (2) | 2023.03.14 |
[Javascript] for문 활용하기 (0) | 2023.03.10 |
[Javascript] 자바스크립트 이해하기 (0) | 2023.03.10 |