728x90
- 참고
// dir()은 개체의 모든 속성 및 메서드를 나열하는 JavaScript의 내장 메서드.
// 주어진 객체의 모든 속성을 문자열 배열로 반환하며, 이를 통해 개발자는 개체를 탐색하고 디버그한다.
console.dir();
1. 배열
- java와 달리 배열의 크기는 동적으로 변경가능하다.
- 하나의 배열에 여러 타입의 값을 저장할 수 있다.
- 배열도 객체이며, new 연산자로 생성할 수 있다.
- 배열 생성 방법
- new Array()
- new Array(num) :num개 길이 생성
- 실제 공간은 확보하지 않는다.
- .length를 통해서 길이로는 인정된다.
- 동적 배열이여서 .length가 고정 값이 아니다.
- [1,2,3] : 값 바로 집어넣기
- new Array()
- 참고 - 객체
- 배열과 동일하게 생성한다.
- new Object();
- obj = {};
// 배열은 동적이다
const arr1 = new Array(); // 이렇게 하지 말기
const arr2 = new Array(4); // 이건 가능. 배열칸이 4개인 배열 생성
const arr3 = [1, 2, 3]; // 3개
console.log(arr3[0]); // 배열 확인
arr3[6] = 199; // 동적 추가 가능
console.log(arr3); // 출력시 empty items가 몇개인지 보여주지만 실제 공간을 준비해놓지는 않는다.
console.log(arr3[4]); // empty 칸은 undefiend 이다.
console.log(arr3.length); // 7 그래도 개수로는 인정해준다.
for (const i in arr3) {
console.log(arr3[i]); // empty items는 제외한다.
}
2. 배열 함수
2.1. 탐색, 출력
- 조건 맞는 요소 찾기
- find(lambda function) : 순차적으로 탐색, 일치 요소 1개만 반환
- filter(lambda function) : 일치 요소 배열로 다 반환
- indexOf() : 반환 type number
- indexOf("value") : 해당 value가 위치한 index 반환. 없으면 -1
- indexOf("value", n) : n번째 index부터 value가 위치한 index 반환. n이 음수이면 끝에서부터 시작
- find(lambda function) : 순차적으로 탐색, 일치 요소 1개만 반환
- 모든 요소 출력하기
- toString(): array명.toString()
- join(): array명.join("x") : x에 원하는 중간 string을 넣을 수 있다.
const arr4 = [10, 20, 30, 40, 50];
function checkAdult(age) {
return age >= 18;
}
// find
console.log(arr4.find(checkAdult)); // 순차적 검색, 처음 값만 출력
// filter
console.log(arr4.filter(checkAdult)); // [ 20, 30, 40, 50 ]
// index
const fruits = ["ba", "ora", "app", "man"];
var a = fruits.indexOf("ba", 0); // 0
var a = fruits.indexOf("ba", 1); // -1
var a = fruits.indexOf("ba", -1); // -1
var a = fruits.indexOf("ba", -4); // 0
console.log(a);
//toString
console.log(fruits.toString()); // ba,ora,app,man
console.log(arr4.toString()); //10,20,30,40,50
// join
console.log(fruits.join(" - ")); // ba - ora - app - man
console.log(arr4.join(" & ")); //10,20,30,40,50
2.2. 추가, 삭제
- 원본을 건들인다.
- 오른쪽 요소 추가 삭제
- push("x") : 오른쪽에 요소 추가
- pop() : 오른쪽에 요소 제거
- 왼쪽 요소 추가 삭제
- unshift("x") : 왼쪽에 요소 추가
- shift() : 왼쪽 요소 제거
- 가운데 요소 추가 삭제
- splice(index, 1 || 0, "x")
- 해당 인덱스 위치에 "x" 값 넣기
- 1 : 해당 인덱스 값 대체
- 0 : 해당 인덱스 위치에 값 삽입
- 해당 인덱스 위치에 "x" 값 넣기
- splice(index, num) : 해당 인덱스 부터 num개 삭제. 삭제 요소 배열로 반환
- delete Array명[index]
- 해당 array의 index 제거, 해당 위치에 undefined 남아 있다.
- true 반환, 없는 index 제거해도 true 반환
- splice(index, 1 || 0, "x")
- 오른쪽 요소 추가 삭제
- 원본 안건들이는 method
- slice(a, b) : a index부터 b개 새 배열로 반환
const fruits = ["ba", "ora", "app", "man"];
// right 추가 삭제
fruits.push("Kiwi");
console.log(fruits);
fruits.pop();
console.log(fruits);
// left 추가 삭제
fruits.unshift("lemon");
console.log(fruits);
fruits.shift();
console.log(fruits);
fruits.splice(-1, 1, "splice 1 = 대체");
console.log(fruits);
fruits.splice(0, 0, "splice 0 = 삽입");
console.log(fruits);
delete fruits[0];
console.log(fruits);
// splice, slice 차이점
const a = fruits.splice(0, 2); // 원본 요소 이용 삭제
console.log(a); // 제거한 요소
console.log(fruits); // 남은 요소
const b = fruits.slice(0, 2); // 원본 유지
console.log(b); // 나눈 요소 - 원본 아님
console.log(fruits); // 남은 요소 - 원본 유지
2.3. 정렬하기, 뒤집기, 채우기, 합치기
- sort() : 사전순 정렬, comparater를 이용해서 정렬기준을 제공시 해당 정렬조건으로 정렬
- reverse() : 사전 역순 정렬, comparater 사용 가능
- comparater
- (a,b) => a-b; // sort
- (a,b) => b-a; // reverse
- () => Math.random -0.5; // shuffle
- fill(x) : array의 모든 요소를 x로 채운다
- concat() : 배열 합치기. 2개의 배열을 하나로 병합
// 배열 정렬, 뒤집기, 채우기, 합치기
const fruits = ["ba", "ora", "app", "man"];
var a = fruits.sort();
console.log(a); // [ 'app', 'ba', 'man', 'ora' ]
var a = fruits.reverse();
console.log(a); // [ 'ora', 'man', 'ba', 'app' ]
const arr = [20, 10, 1, 6, 3, 30];
//string 형식의 사전순
var a = arr.sort();
console.log(a); // [ 1, 10, 20, 3, 30, 6 ]
var a = arr.reverse();
console.log(a); // [ 6, 30, 3, 20, 10, 1 ]
// comparater lambda 식 적용
var a = arr.sort((a, b) => a - b);
console.log(a);
var a = arr.sort((a, b) => b - a);
console.log(a);
// shuffle
var a = arr.sort(() => Math.random() - 0.5);
console.log(a);
// fill
arr.fill(null);
console.log(arr); // [ null, null, null, null, null, null ]
console.log(arr.length); // 6
arr.fill(undefined);
console.log(arr); // [ undefined, undefined, undefined, undefined, undefined, undefined ]
console.log(arr.length); // 6
arr.fill(1);
console.log(arr); //[ 1, 1, 1, 1, 1, 1 ]
console.log(arr.length); // 6
// concat
var arr1 = [2, 2, 2, [1, 1]];
var concat = arr1.concat(arr);
console.log(concat);
3. 다차원 배열
- 생성방법 2가지
- [[],[]]
- for문 이용
// 다차원 배열
// 1. 직접 작성
var arr2 = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
];
console.log(arr2);
var a = arr2.flat(); // java flatMap
console.log(a);
// 2. for문 작성
for (i = 0; i < 5; i++) {
arr2[i] = new Array(5);
}
console.log(arr2);
이전 발행글 : 2. JS 핵심 - 연산자