Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 객체의 크기(속성 개수) 구하는 방법

JavaScript에서 객체의 '길이'란 배열과 달리 length 속성을 직접 제공하지 않기 때문에, 객체가 가진 속성(property)의 개수를 직접 계산해야 함을 의미합니다. 이번 글에서는 객체의 크기를 구하는 방법을 예제와 함께 살펴보겠습니다.

예제 객체

다음과 같은 객체가 있다고 가정해 보겠습니다.

const obj = {
    name: "Ramesh",
    age: 34,
    occupation: "HR Manager",
    address: "Tilak Nagar, New Delhi",
    experience: 13
};

위 객체에는 총 5개의 속성이 있습니다. 우리는 객체를 인자로 받아 그 크기(즉, 속성의 개수)를 계산하는 JavaScript 함수를 작성해야 합니다.

Object.prototype.size 메서드 활용하기

다음은 for...in 반복문과 hasOwnProperty() 메서드를 사용하여 객체의 크기를 계산하는 코드입니다.

const obj = {
    name: "Ramesh",
    age: 34,
    occupation: "HR Manager",
    address: "Tilak Nagar, New Delhi",
    experience: 13
};
Object.prototype.size = function(obj) {
    let size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) {
            size++
        };
    };
    return size;
};
const size = Object.size(obj);
console.log(size);

코드 설명

for...in 반복문은 객체의 모든 열거 가능한 속성을 순회합니다. 이때 상속받은 속성까지 포함될 수 있으므로, hasOwnProperty()를 사용해 객체 자신이 직접 가진 속성만 카운트하도록 필터링합니다. 이렇게 하면 프로토타입 체인의 속성이 개수에 포함되는 것을 방지할 수 있습니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

5

더 간단한 방법: Object.keys()

ES5 이상 환경에서는 Object.keys() 메서드를 사용하는 것이 더 간결하고 권장되는 방식입니다.

const size = Object.keys(obj).length;
console.log(size); // 5

Object.keys()는 객체 자신의 열거 가능한 속성 이름들을 배열로 반환하므로, 배열의 length 속성으로 속성 개수를 바로 확인할 수 있습니다. 프로토타입을 수정하지 않아도 되기 때문에 코드 충돌 위험 없이 안전하게 사용할 수 있다는 장점이 있습니다.