어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨
23.03.23 / 배열 (자바와 비교해서..) 본문
728x90
- 하나의 저장소에 여러 데이터 타입을 저장 할 수 있는 방법 (객체)
- 하나의 저장소에 공간을 쪼개서 저장할 수 있다.
- 그 공간에는 주소가 생성되는데 그것을 index라고 한다.
- index의 처음 시작 주소는 0번부터 시작된다.
- 배열 객체에 담긴 대상을 요소(원소) 라고 한다.
- index를 활용하여 배열에 접근이 가능하며, 접근이 되었다면 값을 저장하거나 값을 가져올 수 있다.
- 모든 자료형과 객체를 담을 수 있다.
- var, let, const 뭘 사용하든 상관 없지만.....
- 배열 안에 담긴 값이 꾸준히 저장/유지되는 것이 중요한 경우에는 const (재선언,재할당 불가능) 사용해서 선언
[ 자바의 배열과 자바스크립트의 배열 ]
자바는 배열을 선언할 때 데이터 타입을 정해서 정해진 데이터 타입만 담을 수 있지만
자바스크립트는 배열 선언시 데이터 타입을 지정하지 않기 때문에 타입 상관 없이 담을 수 있다.
그럼 데이터 타입을 굳이 쓰지 않아도 되나? - 오류를 적게 하기 위해서 적어주는 것이 좋다.
[ 배열 선언 ]
♥ 자바의 배열 선언 ♥
//배열 선언1
int[] intArray;
double[] doubleArray;
String[] strArray;
//배열 선언2
int intArray[];
double doubleArray[];
String strArray[];
//값을 배열에 저장(배열 생성)하는 동시에 선언(초기화)하는 방법
String[] intArray = { “홍길동”, “이순신”, “고길동” };
//배열 생성1 (선언과 생성 동시에) - 빈 인덱스 만들어 주는 것
배열명[] = new 데이터형[배열의크기];
intArray[] = new String[3];
//배열 생성2 (선언과 생성 따로) - 빈 인덱스 만들어 주는 것
int[] intArray;
intArray = new String[3];
-----------------------------------------------
♥ 자바 스크립트의 배열 선언 ♥
//기본 배열 선언 방법
var arr = [];
//자바에서는 생성자 메소드 호출이지만
//js에서는 배열 선언 방법 중 하나
//굳이 이렇게 쓰지 않고 기본 배열 방법을 사용한다.
var arr = new Array();
//값을 배열에 저장하는 동시에 선언하는 방법
var arr = ['홍길동', '이순신', '고길동'];
//데이터 타입 통일하지 않아도 가능
const arr6 = ["가",1,'나',true,null,undefined, [1,2,3]];
var arr = new Array();를 왜 굳이 사용하지 말라는 건지?
Array는 내장 객체를 불러온 것 (자바의 생성자 메소드와 혼동x)
가변적이기 때문에 길이에 한정이 없음
new Array가 길이에 한정이 없는게 문제라면 길이를 한정 한다면?
const arr3 = new Array(3); // int[] arr3 = new int[3]; (자바에서 길이를 제한한 배열이랑 같은 예)
하지만 자바 스크립트에서 배열은 공간을 한정할 이유가 없음
그니까 걍 쓰지 말라는 이야기~
[ 배열에 값 추가/수정 / 초기화 ]
♥ 자바 ♥
//배열에 값 추가하기 (인덱스를 정해서 추가/수정/초기화)
intArray[1] = “이순신장군”;
intArray[3] = “세종대왕”;
//리스트 컬렉션 (인터페이스)를 사용해서 추가하는 방법
//List<String> intArray = new ArrayList<String>();
intArray.add('한국');
-----------------------------------------------------
♥ 자바 스크립트 ♥
//배열에 값 추가하기 (인덱스를 정해서 추가/수정/초기화)
arr[0] = '바나나';
arr[1] = '딸기';
arr[2] = '사과';
//현재 arr 배열에는 0~2 인덱스에 값이 있음
//그런데 값 추가를 3인덱스를 뛰어넘고 4인덱스에 함 - 3인덱스 empty 상태 됨
arr[5] = '포도'; //바나나, 딸기, 사과 , empty, 포도
//배열에 값 추가하기 (인덱스의 제일 끝에 추가)
arrP.push('바나나');
arrP.push('딸기');
arrP.push('사과');
[ 배열에 접근하기 ]
♥ 자바와 자바스크립트 똑같음 ♥
1. 배열 변수명 // 배열 전체 접근
2. 배열 변수명[인덱스] // 특정 인덱스에 접근
const arr['바나나','딸기','사과'];
console.log(arr); // 바나나,딸기,사과 출력
console.log(arr[2]); // 사과 출력
[ 배열 객체의 속성과 메소드 ]
- length : 배열의 크기를 알수 있는 속성
- push() : 배열에 값을 삽입하는 메서드
- pop() : 배열의 마지막 요소 제거 후 제거된 요소 반환
- splice(삭제를 시작할 인덱스, 삭제할 요소수) : 특정배열 요소 삭제
- Array.isArray(배열 변수명) : 배열 여부 확인
const arr = [1,2];
console.log(arr.length, 'arr의 배열의 크기');
//배열의 크기를 출력하는 방법(인덱스 갯수)
//인덱스의 주소와 배열의 크기를 헷갈리지 않기!
let result1 = arr.push(3); // 끝 인덱스의 다음 익덱스에 값 생성 - 리턴 값은 추가 후 배열의 길이
console.log(result1,arr);
ar8.push(4,5); // 두 개 동시에 대입 가능
console.log(result1,arr);
let result2 = arr.pop(); // 끝 인덱스의 값 제거 - 리턴 값은 삭제된 배열
console.log(result2,arr);
let result3 = arr.splice(1,2); // 1인덱스부터 2개의 배열을 삭제하고 삭제한 값을 배열로 생성
console.log(result3,arr); // 결과 arr = [1,2,3,4] -> [1,4] / result3 = [2,3]
//배열일 때 반복문을 돌려라 같은 조건 확인에 사용한다.
console.log(Array.isArray(result1), 'result1 배열여부확인');
console.log(Array.isArray(result3), 'result3 배열여부확인');
자바의 메소드와 자바스크립트의 함수
객체 안에 담겨 있는 함수를 메소드라고 한다. - 자바에서는 함수 존재하지 않는다. (모든 클래스 내에 함수가 존재하기 때문)
728x90
'Front - end > JS' 카테고리의 다른 글
23.03.30 / 함수 function (0) | 2023.03.30 |
---|---|
23.03.24 / 객체 타입, this, 매개변수와 인자 (0) | 2023.03.24 |
23.03.16 / 연산자 (종류와 우선순위) (0) | 2023.03.16 |
23.03.16 / 데이터 타입 (타입과 값의 구분, 타입 변환, 출력) (0) | 2023.03.16 |
23.03.16 / ★★ 변수 (변수 선언, 식별자, 변수 호이스팅) (0) | 2023.03.16 |