자바스크립트 배열의 특징

Kim Jin Hyeok·2021년 2월 9일
0

객체와 배열의 차이

// fruitsArr 배열
var fruitsArr = ['apple', 'orange', 'banana'];
console.log(fruitsArr[0]); // apple
console.log(fruitsArr[1]); // orange
console.log(fruitsArr[2]); // banana

// fruitsObj 객체
var fruitsObj = {
  '0': 'apple',
  '1': 'orange',
  '2': 'banana'
};
console.log(fruitsObj[0]); // apple
console.log(fruitsObj[1]); // orange
console.log(fruitsObj[2]); // banana

// typeof 비교
console.log(typeof fruitsArr); // object
console.log(typeof fruitsObj); // object

// length 프로퍼티
console.log(fruitsArr.length); // 3
console.log(fruitsObj.length); // undefined

// 배열 메서드
fruitsArr.push('lemon'); // lemon 추가
fruitsObj.push('lemon'); // Uncaught TypeError: #<Object> has no method 'push' 발생

객체의 프로토타입과 배열의 프로토타입

배열의 프로퍼티 열거

배열도 객체라 for in문을 쓸 수 있는데 불필요한 것까지 참조하므로 for문 사용을 권장한다.

배열의 삭제

delete 연산자는 해당 요소의 값을 undefined로 설정한다.
완전한 삭제는 splice()를 사용해야 한다.

splice(start, deleteCount, item...)

Array() 생성자 함수

인자가 1개고 숫자 - 인자를 length로 갖는 빈 배열 생성
그외 - 인자를 요소로 갖는 배열 생성

var arr1 = new Array(3);
console.log(arr1) // [undefined, undefined, undefined]

var arr2 = new Array(1, 2, 3);
console.log(arr2) // [1, 2, 3]

유사 배열 객체

length 프로퍼티를 가진 객체를 말한다. apply() 메서드를 이용해 객체임에도 표준 배열 메서드를 사용할 수 있다.

var obj = {
    name: 'kim',
    length: 1
}

Array.prototype.push.apply(obj, ['jin']);
console.log(obj); // { '1': 'jin', name: 'kim', length: 2 }

0개의 댓글