728x90
반응형
* [출처] 이웅모, 모던 자바스크립트 Deep Dive 자바스크립트의 기본 개념과 동작원리(2020) , 위키북스, p.492-507
* 책 읽고 공부한 내용 정리한 TIL 입니다. (정보 전달 목적이 아니라 개인 기록용이니 참고 바랍니다.)
[ctrl + f 로 찾아쓰기]
* length 프로퍼티
* 희소배열
(배열생성)
* Array.of
* Array.from
(배열 요소 삭제)
* Array.splice(삭제 시작할 인덱스, 삭제할 요소 개수)
27장. 배열 (1) 생성,참조,추가,삭제
27.1 배열이란?
- 배열은 객체 타입
- 배열 & 객체의 큰 차이점 : 값의 순서 / length 프로퍼티
- 배열의 생성자 함수 : Array
- 배열의 프로토 타입 객체 : Array.prototype
- 배열의 요소는 최대 2의32승 -1 (4,294,967,295)개 까지 가능
27.3 length 프로퍼티와 희소배열
[].length // 0 (빈 배열이면 0)
[1,2,3].length //3 (빈 배열이 아니면 인덱스 +1)
- 희소배열: 배열의 요소가 연속적으로 위치x / 일부가 비여 있는 배열
[예제 27-17]
//희소배열
const sparse =[,2,,4];
//희소배열의 length 프로퍼티는 요소의 개수와 일치 안함
console.log(sparse.length); //4
//배열 인덱스가 0,2의 요소가 존재하지 않음
console.log(Object.getOwnPropertyDescriptions(sparse));
/*
'1' : ~~~
'3' : ~~~
length :~~~
*/
27.4.2 Array 생성자 함수
[예제 27-19]
//1.기본
const arr = [];
[예제 27-25]
//2.Array 생성자 함수
new Array(); // []
new Array(1,2,3); // [1,2,3]
new Array({}); // [{}]
[예제 27-27]
//3. Array.of : 전달된 인수를 요소로 갖는 배열 생성
Array.of(1); //[1]
Array.of(1,2,3); //[1,2,3]
Array.of('string'); //['string']
[예제 27-28]
//4. Array.from : 유사배열객체 / 이터러블 객체를 인수로 받아 배열 생성
//유사배열
Array.from( {length: 2, 0:'a', 1:'b'} ) // ['a','b']
Array.from( {length: 3} ); // [undefined,undefined,undefined]
//이터러블 객체
Array.from('Hello'); // ['H','e','l','l','o']
Array.from({length:3}, (_,i) => i)} ; // [0,1,2]
- 이터러블 객체 : Symbol.iterator 메서드 구현 (for--of문으로 순회 가능)--> 34장"이터러블" 참고
27.6 배열 요소의 추가와 갱신
[예제 27-34]
const arr = [0];
//1.요소 추가
arr[1] = 1;
console.log(arr); //[0,1]
[예제 27-38]
//프로퍼티는 length에 영향을 안 줌
const arr = [];
//배열 요소 추가
arr[0] = 1;
arr['1'] =2;
//프로퍼티 추가
arr['foo'] = 3;
arr.bar = 4;
arr[1.1] = 5;
arr[-1] = 6;
console.log(arr); //[1,2,foo:3, bar:4, '1.1' : 5, '-1':6]
console.log(arr.length); //2
- 배열에 프로퍼티는 길이에 영향을 주지 않음
27.7 배열 요소의 삭제 : splice(삭제 시작할 인덱스, 삭제할 요소 개수)
const arr = [1,2,3];
delete arr[1];
console.log(arr); // [1,empty,3]
//요소 삭제해도 길이에 영향 안줌 --> 희소배열이 되어버림
console.log(arr.length); //3
** 그렇기에 특정요소를 완전히 삭제 "splice()"메서드 사용
const arr = [1,2,3];
//Array.prototype.splice(삭제 시작할 인덱스, 삭제할 요소 개수)
arr.splice(1,1); //1번째인덱스부터 1개 삭제
console.log(arr); //[1,3]
console.log(arr.length); //2
반응형
'JavaScript' 카테고리의 다른 글
JS 2주차 정리 :: ES6 문법 8가지 (구조분해할당, ...전개구문) | 일급객체 | Map | Set (1) | 2023.10.13 |
---|---|
JS 1주차 정리 :: 데이터 타입 | 형 변환 | 화살표 함수 | 조건문 | 반복문 | 객체 | 배열 (0) | 2023.10.12 |
[모던 자바스크립트 Deep Dive] 27장. 배열(2) 배열 메서드 (1) | 2023.09.24 |
[모던 자바스크립트 Deep Dive] 17장. 생성자 함수에 의한 객체 생성 (0) | 2023.09.23 |
[모던 자바스크립트 Deep Dive] 10장.객체 리터럴 / 11장.원시값과 객체 비교 (0) | 2023.09.23 |